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