簡體   English   中英

Apache Ant中的java任務出現問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM