java - 使用 makefile 使用 javac 编译时出现“错误:找不到符号”
问题描述
我的目录目前看起来像这样
├── 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 将所有内容放在测试文件夹中。但是它无法在另一个目录中运行东西,所以我必须将 RunProgram.class 输出到根目录。
当包结构中的唯一程序是 RunProgram.java 时,这就是我从命令行运行测试的方式
javac -d ./ ./src/RunProgram.java
./run_tests "java RunProgram"
但是,当我现在尝试运行 javac 时,出现包导入不存在的错误。这就是我使用 Makefile 的原因,因为这是理想的解决方案。
TL;DR我需要一种方法来使用 Makefile 编译我的程序并编写一个可以正确调用 run_tests 的“make test”命令
我也愿意接受允许我从命令行运行 javac 并从那里运行测试的解决方案,但 Makefile 是首选
解决方案
为了解决这个问题,我能做的最好的事情是制作一个 jar 文件,然后再做./run_tests "java -jar RunProgram.jar"
显然不理想,但它确实有效。
推荐阅读
- python - Dockerised 微服务没有响应
- c# - WPF 触发从一个 UserControl 到另一个单击事件的单击事件
- python - Python列表我不知道为什么差是16
- makefile - 为使用测试制作版本依赖
- jmeter - JMeter 中的 CSV 数据集配置
- python-2.7 - 如何优化迭代大量字典的循环,具有不同的值大小?
- reactjs - 如何设置 Amcharts 4 滚动条颜色?
- android - 读取浏览器中显示的输入字段的属性
- django - 如何使用订阅对象列表检索 django 多对多字段
- xamarin - Xamarin Listview Itemtemplate 外观问题