我有一些我修改的代码。运行使用Ant构建的Java的类错误
当我尝试在目录中运行Ant时失败并丢失类。我可以通过使用-lib选项指定到现有类的位置。然后编译工作正常,但是创建的dist ZIP文件似乎缺少库,因为当我尝试运行它时,我看到与缺少的类有关的错误,这些类是我使用-lib选项指定的类,所以这是可能是由于我使用-lib选项的方式。
如何强制常规Ant命令包含使用-lib命令指定的其他类?
我有一些我修改的代码。运行使用Ant构建的Java的类错误
当我尝试在目录中运行Ant时失败并丢失类。我可以通过使用-lib选项指定到现有类的位置。然后编译工作正常,但是创建的dist ZIP文件似乎缺少库,因为当我尝试运行它时,我看到与缺少的类有关的错误,这些类是我使用-lib选项指定的类,所以这是可能是由于我使用-lib选项的方式。
如何强制常规Ant命令包含使用-lib命令指定的其他类?
您可以编写一个目标,将您的lib目录/文件复制到您的zip文件中。 比方说,创建一个临时目录,然后复制你的文件,然后执行复制lib目录的目标,然后zip压缩目录。
<target name="copyLib">
<copy todir="${temp.dir}">
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</copy>
</target>
更新路径并将此目标调用到您的创建zip目标中。
编译器的任务看起来是这样的:
<javac srcdir="${base}/src"
destdir="${base}/classes"
classpath="${base}/lib">
</javac>
而且zip
任务看起来是这样的:使用
<zip
destfile="${base}/dist.jar"
basedir="${base}/classes"
includes="..."
excludes="...">
</zip>
所以源在课程编制和zip压缩在一个罐子里,但库编译时不包含在jar中,它们是运行时依赖项。
这个假设$ {base}/lib有java类,并且不是一组jar文件 – MeBigFatGuy
根据ANT文档https://ant.apache.org/manual/Tasks/javac.html,'classpath'有一个路径 - 所以它可以完美地成为一个文件夹与罐子https://ant.apache.org/manual/using.html#path – fustaki
你需要指定一个
我建议你在ANT脚本的顶部声明你的路径,如下所示,使用一个文件集。
<path id="build.path">
<fileset dir="lib" includes="*.jar"/>
</path>
与强制用户指定正确的“-lib”参数相比,不易出错。
最后同样的文件集然后可以用于包括压缩文件内同一罐正在创建:
<zip destfile="${dist.dir}/mycode.zip">
..
..
<fileset dir="lib" includes="*.jar"/>
</zip>
谢谢,我不是很了解蚂蚁。我怎么会这样做?这听起来像我需要的。 –