2010-10-31 78 views
2

你好,我是Java開發新手。我試着寫這應該是可運行在Linux下生成文件:Makefile for Java找不到包

JFLAGS = -g 

JC = javac 

.SUFFIXES: .java .class 

.java.class: 

$(JC) $(JFLAGS) $*.java 



Heap.class: FibonacciHeap.java \ 
    FileOperation.java \ 
    MinLeftistTree.java \ 
    RandomPermutation.java \ 
    Heap.java 
default: classes 
classes: $(CLASSES:.java=.class) 
clean: 

$(RM) *.class 

在我的假設,Heap.class應該依賴於其他所有的java文件。另外,主文件也應該在其中。

但是,我不能讓它運行,它顯示

Heap.java:3: package heap.FibonacciHeap does not exist 

,並不能找到其他的Java文件中的其他引用,如

Heap.java:61: cannot find symbol symbol : variable RandomPermutation location: class heap.Heap 
     list = RandomPermutation.GetList(listnum[route]); 

這個程序運行在日食的罰款。你有什麼建議嗎?

我是新來的,我可能會犯一些錯誤....我對編譯器和make文件不太瞭解。如果你能指出,我將不勝感激!

+2

你可能想看看Ant。通常使用它來代替'make'來編譯和打包Java代碼。 – 2010-10-31 14:30:19

+0

不幸的是,它是一個類項目,它需要使用makefile命令完成 – Seen 2010-10-31 14:33:11

回答

0

我看不到您設置CLASSPATH的位置。我不關心它是一個make文件還是Ant - javac.exe和java.exe期望在運行時設置CLASSPATH。你的在哪裏?

我相信你必須在生成文件中設置CLASSPATH,然後再運行javac.exe。

我會忘記make(和Eclipse)片刻。你可以讓這個項目編譯並在命令行中運行嗎?如果你不能,我會說你不應該靠任何工具來幫助你。

閱讀this可能會對您有所幫助。

是否真的成爲履行這項任務的要求?教授將如何知道您使用Eclipse或make或Ant或shell命令將.java編譯爲.class文件?

+0

非常感謝您的第一個快速解答。我是否需要將設置的CLASSPATH包含在make文件或我的java源文件中?你有任何其他文件的參考可以幫助我嗎? – Seen 2010-10-31 14:47:41

+0

@Seen - CLASSPATH是一個系統環境變量,需要在運行程序之前進行設置,或者在使用'-cp'參數運行程序時進行設置。只需在終端輸入'java -help'。 – Jeremy 2010-10-31 15:06:25

+0

我將嘗試找到一種方法來查看是否可以將類路徑的環境變量放入make文件。再次感謝您的更新。 – Seen 2010-10-31 15:33:02