缺少运行使用Ant构建的Java的类错误

时间:2017-02-16 16:20:56

标签: java ant

我有一些我修改过的代码。

当我尝试在目录中运行Ant时,它会因缺少类而失败。我可以使用-lib选项指定现有类的位置。然后编译工作正常,但是创建的dist ZIP文件似乎缺少库,因为当我尝试运行它时,我看到与缺少的类有关的错误,这是我用-lib选项指定的类,所以这是可能是由于我使用-lib选项的方式。

如何强制常规Ant命令包含使用-lib命令指定的其他类?

3 个答案:

答案 0 :(得分:1)

您可以编写一个目标来复制zip文件中的lib目录/文件。 假设创建一个临时目录然后复制你的文件,然后执行目标以复制lib目录,然后压缩临时目录。

<target name="copyLib">
    <copy todir="${temp.dir}">
         <fileset dir="${lib.dir}">
            <include name="*.jar" />                        
        </fileset>
    </copy>
</target>

更新路径并将此目标调用到您的创建zip目标。

答案 1 :(得分:1)

编译器任务可能如下所示:

<javac srcdir="${base}/src" 
      destdir="${base}/classes" 
      classpath="${base}/lib">
</javac>

zip任务看起来像这样:

<zip
    destfile="${base}/dist.jar"
    basedir="${base}/classes"
    includes="..."
    excludes="...">
</zip>

因此,源代码在类中编译并压缩在jar中,但用于编译的库不包含在jar 中,它们是运行时依赖项。

答案 2 :(得分:0)

我建议您使用文件集在ANT脚本的顶部声明路径,如下所示。

<path id="build.path">
    <fileset dir="lib" includes="*.jar"/>
</path>

与强制用户指定正确的&#34; -lib&#34;相比,更不容易出错。参数。

最后,可以使用相同的文件集在您正在创建的zip文件中包含相同的jar:

  <zip destfile="${dist.dir}/mycode.zip">
    ..
    ..
    <fileset dir="lib" includes="*.jar"/>
  </zip>