2013-04-29 70 views
1

我有一個使用eclipse創建的項目。 現在我想將這個項目複製到我的Linux計算機上進行編譯並在那裏運行。Java makefile運行

爲此,我想創建一個用於自動編譯和運行的makefile。

我已經創建了一個makefile,它可以編譯我的項目。 但現在它應該編譯後開始我的程序,我不知道如何做到這一點。

我想鍵入「make」,它應該編譯源代碼,之後它應該自動啓動我的主。現在我有一個shellcript,它可以執行以下操作。

make 
java Main 

我已經嘗試運行「make run」,但出現錯誤。

No rule to make target 'Main', needed by 'run'. 

這是我的Makefile。

JFLAGS = -g 
JC = javac 
JVM= java 
FILE= 
.SUFFIXES: .java .class 
.java.class: 
    $(JC) $(JFLAGS) $*.java 
CLASSES = \ 
    Main.java \ 
    Class1.java \ 
    Class2.java \ 
    Class3.java \ 
    Class4.java 

MAIN = Main 

default: classes 

classes: $(CLASSES:.java=.class) 

run: $(MAIN).class 
    $(JVM) $(MAIN) 

clean: 
    $(RM) *.class 
+5

使用make來構建Java程序是隻是一種命運多approach的方法。它可能適用於非常簡單的項目,但當你有更多的類,包中的類,內部類的類時等等,你永遠不會獲得依賴關係。做你自己的忙,花一些時間學習Maven或Ant。順便說一句:沒有理由在Linux上編譯源代碼(除非是爲了好玩和利潤),只需使用Windows窗口中的編譯類即可! – 2013-04-29 20:08:16

+0

另外:Eclipse可以爲您導出一個ant構建文件,它將構建您的項目並將其編譯爲單個jar文件。真的沒有必要永遠用java做make – MTilsted 2017-12-01 02:02:11

回答

1

您需要添加classes而非Main.class作爲運行的依賴,因爲你還沒有爲Main.class定義的規則,即這應該工作:

run: classes 
    $(JVM) $(MAIN)