2012-04-09 56 views
1

我已經找到了關於如何設置類路徑的示例,以便可以執行Java程序或包含外部罐子,但不能同時包含這兩個。我試圖在一個文件中合併多個示例失敗。如何在ant文件中設置classpath以執行Java程序幷包含外部jar?

我的.java源文件位於src目錄下,我要執行的文件是src/TEDI.java,類文件正確放入編譯目錄,並且所有的jar文件都位於目錄jung2-2_0_1 。我可以讓我的程序編譯,但不執行,使用下面的螞蟻文件:

<?xml version="1.0"?> 
<project name="TEDI" basedir="." default="execute"> 
    <property name="src" value="src"/> 
    <property name="output" value="build"/> 
    <property name="lib" value="jung2-2_0_1"/> 

    <target name="execute" depends="compile"> 
     <echo> 
      Executing TEDI. 
     </echo> 
     <java classname="${output}/TEDI.class"> 
      <classpath refid="java"/> 
     </java> 
    </target> 

    <target name="compile" depends="create"> 
     <echo> 
      Compiling source files. 
     </echo> 
     <javac destdir="${output}">    
      <src path="${src}"/>    
      <classpath refid="java"/> 
     </javac> 
    </target> 

    <target name="clean"> 
     <echo> 
      Deleting old class files. 
     </echo> 
     <delete dir="${output}"/> 
    </target> 

    <target name="create" depends="clean"> 
     <echo> 
      Creating output directory. 
     </echo> 
     <mkdir dir="${output}"/> 
    </target> 

    <path id="java"> 
     <pathelement location="${output}"/> 
     <fileset dir="${lib}"> 
      <include name="*.jar"/> 
     </fileset> 
    </path> 
</project> 

當我運行螞蟻,它不乾淨,創建和編譯的目標就好了,然後當它得到執行它說:Could not find build/TEDI.class. Make sure you have it in your classpath

無論如何,我希望有人能告訴我我在做什麼錯在path部分。在閱讀關於如何創建一個執行文件的螞蟻目標的例子之後,我添加了pathelement位,但它根本沒有幫助。有很多的例子,他們中的很多人做不同的事情來實現同樣的事情(雖然沒有做我正在做的事情),所以我無法弄清楚我正在嘗試哪種方式是正確的去做。任何幫助或想法將不勝感激。

編輯:根據Sandro的回答將<pathelement location="${build}"/>更改爲<pathelement location="${output}"/>,但它根本不會更改錯誤消息。

回答

1

java任務期望Java類名稱,而不是類文件的路徑。 所以,你應該使用

<java classname="TEDI"> 

代替

<java classname="${output}/TEDI.class"> 
+0

太棒了,這樣做,非常感謝! – Maltiriel 2012-04-09 20:11:52

0

由於您想要執行的類似乎在${output}中,因此您必須在類路徑中包含${output}

嘗試將<pathelement location="${output}"/>添加到您的路徑中。

+0

我已經得到了在那裏現在,'path'段裏面,如果你看一下。我把它放在了錯誤的地方嗎? – Maltiriel 2012-04-09 18:39:27

+0

對不起,我在我的答案中犯了一個錯誤,我應該添加'',你目前包含'$ {build}'。 – Sandro 2012-04-09 18:47:42

+0

你是如此正確...我試着改變它輸出,但它仍然給我完全相同的錯誤信息。我不明白爲什麼它看起來像第一次工作(它給了正確的路徑,構建/ TEDI.class)。 – Maltiriel 2012-04-09 19:04:03

相關問題