我需要在项目jar中包含一些第三方jar文件。我在build.xml中提到它并将其包含在MANIFEST.MF中。现在我将thirdparty1.jar的thirdparty2.jar文件放入项目jar中。但我仍然无法使用罐子。是否需要任何添加配置
这是我的build.xml
<manifest>
<attribute name="Class-Path" value="thirdparty1.jar thirdparty2.jar thirdparty3.jar"/>
如果我分别复制两个罐子,它效果很好。但我不明白复制这些单独的需要是什么。如何解决单独复制jar。
答案 0 :(得分:1)
如果依赖jar打包在项目jar中,则需要一个解决方案从那里加载它。 Java中的标准类路径处理不会访问位于其他jar文件中的jar文件。
请参阅此答案:Classpath including JAR within a JAR。特别是One Jar解决方案:http://one-jar.sourceforge.net/。
答案 1 :(得分:0)
也可以使用zipgroupfileset for.gignn是示例的ant任务。
<!-- Build JAR file -->
<target name="jar" depends="init-build-dir,compile-main">
<!--creating a temp jar contains all jar -->
<jar jarfile="${project.build.lib.dir}/external-libs.jar">
<zipgroupfileset dir="${project.lib.redist.dir}">
<include name="**/*.jar" />
</zipgroupfileset>
</jar>
<sleep seconds="1" />
<!-- creating main jar with temp jar-->
<jar jarfile="${project.build.lib.dir}/${ant.project.name}.jar" manifest="MANIFEST.MF">
<fileset dir="${project.build.main.classes.dir}" includes="**/*.*" />
<zipfileset src="${project.build.lib.dir}/external-libs.jar">
<exclude name="*" />
</zipfileset>
</jar>
<!--removing temp jar -->
<delete>
<fileset dir="${project.build.lib.dir}">
<include name="external-libs.jar" />
</fileset>
</delete>
</target>