"error: cannot find symbol" when compiling with javac using makefile
"error: cannot find symbol" when compiling with javac using makefile
我的目录目前是这样的
├── 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 抛出 "error: cannot find symbol",即使它首先编译 Wheels(之前我的顺序是错误的,现在是正确的)。
2. 我最终需要在 Makefile 中添加一个 "test",这有其自身的问题。本质上 run_tests 将通过 System.in 将所有内容放入测试文件夹中。但是它在另一个目录中遇到问题运行,所以我必须将RunProgram.class输出到根目录。
当包结构中的唯一程序是 RunProgram.java
时,这就是我从命令行进行测试的方式 运行
javac -d ./ ./src/RunProgram.java
./run_tests "java RunProgram"
但是,当我现在尝试 运行ning javac 时,我收到错误消息,指出包导入不存在。这就是为什么我要使用 Makefile,因为这是理想的解决方案。
TL;DR 我需要一种方法来用 Makefile 编译我的程序并编写一个可以正确调用 run_tests[=13= 的 "make test" 命令]
我也愿意接受允许我从命令行 运行 javac 和 运行 从那里进行测试的解决方案,但首选 Makefile
我能做的最好的解决办法是制作一个 jar 文件,然后执行 ./run_tests "java -jar RunProgram.jar"
显然不理想,但它有效。
我的目录目前是这样的
├── 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 抛出 "error: cannot find symbol",即使它首先编译 Wheels(之前我的顺序是错误的,现在是正确的)。
2. 我最终需要在 Makefile 中添加一个 "test",这有其自身的问题。本质上 run_tests 将通过 System.in 将所有内容放入测试文件夹中。但是它在另一个目录中遇到问题运行,所以我必须将RunProgram.class输出到根目录。
当包结构中的唯一程序是 RunProgram.java
时,这就是我从命令行进行测试的方式 运行javac -d ./ ./src/RunProgram.java
./run_tests "java RunProgram"
但是,当我现在尝试 运行ning javac 时,我收到错误消息,指出包导入不存在。这就是为什么我要使用 Makefile,因为这是理想的解决方案。
TL;DR 我需要一种方法来用 Makefile 编译我的程序并编写一个可以正确调用 run_tests[=13= 的 "make test" 命令]
我也愿意接受允许我从命令行 运行 javac 和 运行 从那里进行测试的解决方案,但首选 Makefile
我能做的最好的解决办法是制作一个 jar 文件,然后执行 ./run_tests "java -jar RunProgram.jar"
显然不理想,但它有效。