[英]How to set the classpath in an ant file to execute a Java program and include external jars?
我找到了有關如何設置類路徑以便可以執行 Java 程序或包含外部 jars 的示例,但不能同時包含兩者。 我嘗試將多個示例合並到一個文件中的嘗試失敗了。
我的source.java文件在src目錄下,我要執行的文件是src/TEDI.java,class文件被正確放入build目錄,我所有的jars都在jung2-2_0_1目錄下。 我可以使用以下 ant 文件編譯但不執行我的程序:
<?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>
當我運行 ant 時,它會很好地執行清理、創建和編譯目標,然后當它開始執行時它說: Could not find build/TEDI.class. Make sure you have it in your classpath
Could not find build/TEDI.class. Make sure you have it in your classpath
無論如何,我希望有人能告訴我我在path
部分做錯了什么。 在閱讀了一個有關如何創建 ant 目標以執行文件的示例后,我添加了pathelement
位,但它根本沒有幫助。 有很多示例,其中很多示例以不同的方式做事以實現相同的目標(雖然沒有一個完全按照我想做的做),所以我無法弄清楚哪種方式對我正在嘗試的是正確的去做。 任何幫助或想法將不勝感激。
編輯:根據 Sandro 的回答將<pathelement location="${build}"/>
更改為<pathelement location="${output}"/>
,但它根本不會更改錯誤消息。
java
任務需要 Java class 名稱,而不是 class 文件的路徑。 所以你應該使用
<java classname="TEDI">
代替
<java classname="${output}/TEDI.class">
由於您要執行的 class 似乎在${output}
中,因此您必須在類路徑中包含${output}
。
嘗試將<pathelement location="${output}"/>
添加到您的路徑中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.