【问题标题】:problem with java task in Apache AntApache Ant 中的 java 任务问题
【发布时间】:2011-08-30 14:44:27
【问题描述】:

我是 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

知道问题出在哪里吗?

【问题讨论】:

    标签: java apache ant


    【解决方案1】:

    您可以直接将命令行路径转换为 ​​Ant java task 类路径属性。 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 属性应仅在您要运行包含在该 jar 中的 Main-Class 时使用。

    【讨论】:

      【解决方案2】:

      使用 Fileset 将多个 jars 添加到您的类路径引用似乎是一种干净的方法

      示例:

      <classpath>
        <pathelement path="${classpath}"/>
        <fileset dir="lib">
          <include name="*.jar"/>
        </fileset>
      </classpath>
      

      会将 lib 目录中的所有 jars 添加到类路径中。

      【讨论】:

      • Anto 这可能是更好的方法。将需要在类路径中的库添加到 lib 目录中,然后将上述代码放入 build.xml。
      【解决方案3】:

      您的&lt;classpath&gt; 元素过多。您需要的是单个 &lt;classpath&gt; 元素,如下所示:

      <classpath>
            <pathelement location="C:/tmp/SYS/doodle.jar"/>
             <pathelement location="C:/tmp/SYS/CTX.jar"/>
        </classpath>
      

      您需要像这样更改&lt;java&gt; 标签:

      <java jar="C:/tmp/SYS/doodle.jar" fork="true" classname="sys.ctx.doodle.Start">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-06
        • 2013-06-19
        • 2011-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多