[英]problem with java task in Apache Ant
我是Apache Ant的新手,我想創建一個帶有運行任務的構建文件。 運行任務應執行以下命令行狀態
java -classpath C:/tmp/SYS/doodle.jar;C:/tmp/SYS/CTX.jar sys.ctx.doodle.Start
sys.ctx.doodle.Start類位於doodle.jar中的位置
我的問題是:如何在類路徑中添加兩個元素? 我嘗試了以下方法:
<target name="run">
<java jar="C:/tmp/SYS/doodle.jar" fork="true">
<classpath>
<pathelement location="C:/tmp/SYS/doodle.jar"/>
<pathelement path="sys.ctx.doodle.Start"/>
</classpath>
<classpath>
<pathelement location="C:/tmp/SYS/CTX.jar"/>
</classpath>
</java>
</target>
但是執行時會拋出java.lang.NoClassDefFoundError
知道問題可能在哪里嗎?
您可以將命令行路徑直接轉換為Ant java
task classpath屬性。 Ant應該注意識別由分號分隔的jar名稱組成的名稱。
<java classpath="C:/tmp/SYS/doodle.jar;C:/tmp/SYS/CTX.jar" ... >
或者,您可以像現在一樣將其指定為嵌套元素:
<java ... >
<classpath>
<pathelement path="C:/tmp/SYS/doodle.jar;C:/tmp/SYS/CTX.jar" />
</classpath>
</java>
參數sys.ctx.doodle.Start
看起來像您要運行的類的名稱。 使用classname
屬性將其傳遞給java
任務。 將其與類路徑放在一起會導致:
<java classpath="C:/tmp/SYS/doodle.jar;C:/tmp/SYS/CTX.jar"
classname="sys.ctx.doodle.Start" />
僅當您要運行該jar中包含的Main-Class
時,才應使用jar
屬性。
使用文件集向您的類路徑引用添加多個jar似乎是一種干凈的方法
例:
<classpath>
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</classpath>
將lib目錄內的所有jar添加到類路徑。
您的<classpath>
元素太多。 您需要的是單個<classpath>
元素,如下所示:
<classpath>
<pathelement location="C:/tmp/SYS/doodle.jar"/>
<pathelement location="C:/tmp/SYS/CTX.jar"/>
</classpath>
您將需要像這樣更改<java>
標記:
<java jar="C:/tmp/SYS/doodle.jar" fork="true" classname="sys.ctx.doodle.Start">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.