java - 使用 makefile 使用 javac 编译时为 "error: cannot find symbol"

标签 java bash 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" 显然不理想,但它有效。

关于java - 使用 makefile 使用 javac 编译时为 "error: cannot find symbol",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58332251/

相关文章:

java - 使用 hibernate 和 mysql 自动生成时,表创建的 SQL 不正确

linux - 查找字符串中三个字符序列的频率

linux - 在匹配前一行插入文件内容,同时转义反斜杠

添加 Mongoose Embedded 后无法弄清楚如何构建 C 应用程序

C++ 生成文件。 .o 在不同的子目录中

java - 将图像及其蒙版与 Android 着色器结合起来?

Java线程完成运行后会做什么?

java - 如何使用 CFB 模式、256 位 block 大小和 BouncycaSTLe 加密 Rijndael?

linux - 为什么我的 shell 脚本退出?

visual-studio - 有没有一个工具可以自动将make文件转换为sln/vcproj?