2010-08-01 112 views
1

我正在嘗試通過Web上的HelloWorld示例演示如何在Eclipse中使用ANT創建構建文件。這是從網上例子用螞蟻創建構建文件

<?xml version="1.0" encoding="UTF-8"?> 
<project name="HW.makejar" default="makejar" basedir="."> 
    <target name="makejar" description="Create a jar for the HW project"> 
     <jar jarfile="HelloWorld.jar" includes="*.class" basedir="."/> 
    </target> 
</project> 

項目生成文件但是當我運行所產生的罐子,我得到這個錯誤信息無法從加載的HelloWorld.jar主類清單屬性。

於是我試着這樣說:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="HW.makejar" default="makejar" basedir="."> 
    <target name="makejar" description="Create a jar for the HW project"> 
     <jar jarfile="HelloWorld.jar" includes="*.class" basedir="."> 
      <manifest> 
       <attribute name="Main-Class" value="ami.HelloWorld" /> 
      </manifest> 
     </jar> 

    </target> 
</project> 

當我重新得到的罐子,我得到了以下錯誤消息:

Exception in thread "main" java.lang.NoClassDefFoundError: ami/HelloWorld 

我在做什麼錯。順便說一下,當我手動編譯源代碼並在Eclipse中指定Main.class時,生成的jar完美運行。

+0

<! - ? 「」 <項目名稱= 「HW.makejar」 默認值= 「makejar」 BASEDIR => \t <目標名稱= 「makejar」 描述= 「爲HW項目創建一個罐子」> \t \t <罐子jar文件= 「的HelloWorld.jar」 包括= 「*類。」 BASEDIR = /> \t 「」 - - > 這是第一個XML文件 – Elliott 2010-08-01 16:54:19

+0

<! - <?xml version =「1.0」encoding =「UTF-8」?> \t \t \t \t \t \t \t \t \t \t <屬性名=」 主類」值= 「ami.HelloWorld」/> \t \t \t \t \t \t - > 這是第二個XML文件 – Elliott 2010-08-01 16:55:13

+0

所有這些註釋中的xml不是非常可讀,您是否可以刪除這些註釋並編輯問題以包含到目前爲止的xml? – rsp 2010-08-01 19:00:10

回答

2

你的jar文件是否包含任何類文件?如果沒有,請嘗試:

<jar jarfile="HelloWorld.jar" includes="**/*.class" basedir="."> 
+0

正如你建議,jar文件不包含任何類文件。按照您的建議更改了項目文件。現在我的項目文件如下所示: <?xml version =「1.0」encoding =「UTF-8」?> \t <目標名稱= 「makejar」 描述= 「創建用於HW項目一罐」> \t \t <罐子jar文件= 「的HelloWorld.jar」 包括= 「** \ *。類」 的basedir = 「」> \t \t \t 類文件是在那裏,但是這是當我運行它會發生什麼。 C:\工作區\ HW>罐子的HelloWorld.jar 無法從 加載主類清單屬性的HelloWorld.jar – Elliott 2010-08-01 18:28:50

+0

嘗試添加標籤背到項目文件中的java - 我認爲錯誤消息說,主清單中缺少-Class屬性。 – richj 2010-08-01 21:45:02

+0

我剛剛重建了所有這些更改的項目,現在它的工作。誰知道。也許有些東西被損壞了。無論如何,感謝指針它讓我開始了正確的方向。 – Elliott 2010-08-02 01:09:42

0

是您的basedir正確嗎?如果您jar tvf HelloWorld.jar是類別下列出的ami文件夾?如果它直接列在根目錄下,則需要從其父文件夾中添加它,而不是從ami文件夾中添加它。