簡體   English   中英

使用 makefile 使用 javac 編譯時出現“錯誤:找不到符號”

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM