[英]“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 拋出“錯誤:找不到符號”,即使它先編譯 Wheels(之前我的順序錯誤,現在它是正確的)。
2.我最終需要在 Makefile 中添加一個“測試”,這有其自身的問題。 本質上,run_tests 將通過 System.in 將所有內容放在測試文件夾中。 但是它在另一個目錄中運行東西有問題,所以我必須將 output RunProgram.class 到根目錄。
當 PACKAGE 結構中的唯一程序是 RunProgram.java 時,這就是我從命令行運行測試的方式
javac -d ./ ./src/RunProgram.java
./run_tests "java RunProgram"
但是,當我現在嘗試運行 javac 時,我收到 package 導入不存在的錯誤。 這就是我選擇 Makefile 的原因,因為這是理想的解決方案。
TL;DR我需要一種方法來用 Makefile 編譯我的程序並編寫一個可以正確調用 run_tests 的“make test”命令
我也願意接受允許我從命令行運行 javac 並從那里運行測試的解決方案,但首選 Makefile
我能做的最好的解決方法是制作一個 jar 文件,然后執行./run_tests "java -jar RunProgram.jar"
顯然不理想,但它確實有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.