2014-04-24 39 views
1

我的Java項目使用了一些Apache公共庫。我希望能夠在unix中運行我的程序,但是我做了一個makefile來爲我編譯它。我的項目有4個Java類和4個外部庫(.jars)。在我的目錄中,我有四個.Java文件和一個名爲「lib」的文件夾,其中包含我的.jar文件。這是我的make文件:Java:如何將多個外部庫添加到makefile?

JFLAGS = -g 
JC = javac -sourcepath/-classpath lib/commons-httpclient-3.1.jar:lib/commons-io-2.4.jar:lib/commons-codec-1.9.jar:lib/commons-logging-1.1.3.jar 
.SUFFIXES: .java .class 
.java.class: 
$(JC) $(JFLAGS) $*.java 

CLASSES = \ 
SubmissionDriver.java \ 
FileAndArgs.java \ 
hashConverter.java \ 
InvalidAgeException.java 

default: classes 

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

clean: 
    $(RM) *.class 

這是我的錯誤信息:我得到的是涉及到實際的類文件,即使14出錯信息。下面是一些例子:

SubmissionDriver.java:74: error: cannot find symbol 
    public static void httpSend() throws HttpException, IOException{ 
             ^
    symbol: class HttpException 
    location: class SubmissionDriver 
SubmissionDriver.java:75: error: cannot find symbol 
      HostConfiguration hf=new HostConfiguration(); 
      ^
symbol: class HostConfiguration 
location: class SubmissionDriver 
SubmissionDriver.java:75: error: cannot find symbol 
      HostConfiguration hf=new HostConfiguration(); 
            ^
symbol: class HostConfiguration 
location: class SubmissionDriver 
SubmissionDriver.java:77: error: cannot find symbol 
      PostMethod post = new PostMethod("myurl"); 
      ^

而且它指出這在thsoe 14的錯誤消息的底部:

14 errors 
make: *** [SubmissionDriver.class] Error 1 
+0

也許是有時間使用爲Ant,Maven或Gradle等Java設計的構建器。這些都與您的IDE集成,並可以通過您的IDE進行更新。 –

+0

我確實認爲這已經在您的IDE中工作。你確定你的代碼中的'import'語句是正確的嗎? –

+0

是的,所有的代碼在eclipse中都能正常工作 – user3521471

回答

1
  1. 提出的,是不是一個Java的好身材工具。嘗試螞蟻也許(或Maven, 或Gradle)
  2. 你的makefile的結構方式你調用每個java類的「javac」命令。這是行不通的,如果你的Java類對彼此
  3. 依賴確保您此行之前有一個標籤

    $(JC)$(JFLAGS)$ *。java的

+0

確保您再次檢查$(RM)之前的選項卡。當從windows移到* nix時,文件往往會打破 –