我的目录当前看起来像这样
├── 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
答案 0 :(得分:0)
我能解决的最好办法是制作一个jar文件,然后执行./run_tests "java -jar RunProgram.jar"
显然不理想,但它确实有效。