“错误:找不到符号”,在使用makefile的javac编译时

问题描述 投票:0回答:1

我的目录当前看起来像这样

├── Makefile
├── run_tests (Unix executable)
└── src
    └── vehicles
        ├── Wheels.java
        └── Cars.java
    └── RunProgram.java
    tests
    └── test1.txt
    └── test2.txt

RunProgram.java是我的主要工具。

在线查找,我目前有一个看起来像这样的Makefile:

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
    $(JC) $(JFLAGS) $*.java

 CLASSES = \
    src/vehicles/Wheels.java \
    src/vehicles/Cars.java \
    src/RunProgram.java 

default: classes

classes: $(CLASSES:.java=.class)

clean:
    $(RM) *.class

我现在有两个主要问题。

1。 Cars.java会为Wheels抛出“错误:找不到符号”,即使它先编译Wheels(以前我的命令顺序错误,现在是正确的)。

2。我最终需要向Makefile添加一个“测试”,这有其自身的问题。本质上,run_tests将通过System.in将所有内容放入tests文件夹中。但是,它在另一个目录中运行时遇到麻烦,因此我必须将RunProgram.class输出到根目录。

[[这是当打包结构中的唯一程序是RunProgram.java时,如何从命令行进行测试的方法] >>javac -d ./ ./src/RunProgram.java ./run_tests "java RunProgram"

但是,当我现在尝试运行javac时,出现错误,指出包导入不存在。这就是为什么我要使用Makefile的原因,因为这是理想的解决方案。

TL; DR

我需要一种使用Makefile编译程序并编写可以正确调用run_tests的“ make test”命令的方法

我也愿意接受一个解决方案,该解决方案允许我从命令行运行javac并从那里运行测试,但首选Makefile]]

我的目录当前如下所示├──Makefile├──run_tests(Unix可执行文件)└──src└──车辆├──Wheels.java└──Cars.java└──RunProgram.java测试└── ...

我能解决的最好方法是制作一个jar文件,然后执行./run_tests "java -jar RunProgram.jar"显然不理想,但它确实有效。
java bash makefile javac
1个回答
0
投票
我能解决的最好方法是制作一个jar文件,然后执行./run_tests "java -jar RunProgram.jar"显然不理想,但它确实有效。
© www.soinside.com 2019 - 2024. All rights reserved.