创建 jar 存档时出错,包含超过 65535 个条目
Posted
技术标签:
【中文标题】创建 jar 存档时出错,包含超过 65535 个条目【英文标题】:Error creating jar archive contains more than 65535 entries 【发布时间】:2017-01-24 06:27:41 【问题描述】:我正在尝试构建一个 jar 文件并收到错误 Build Failed。
创建 jar 时出现问题:存档包含超过 65535 个条目。 (并且存档可能已损坏,但我无法删除它)
我正在使用带有 JDK 1.8.0_101 的 Eclipse Neon Release 1,Eclipse 中的 Ant 版本是 1.9.6。
下面是我的 ant 构建文件:-
<property name="jar.name" value="ABC.jar" />
<property name="source.root" value="src" />
<property name="class.root" value="bin" />
<property name="lib.dir" value="lib" />
<property name="jar.dir" value="C:\D\ABC-Exe" />
<property name="Main-Class" value="com.abc.xxx.main.ABCEval" />
<property name="conf.pkj" value="com/abc/xxx/business/configurations" />
<property name="img.pkj" value="com/abc/xxx/business/images" />
<path id="project.class.path">
<pathelement location="$class.root" />
<fileset dir="$lib.dir">
<include name="*.jar" />
</fileset>
</path>
<target name="clean" description="cleans up build structures">
<delete dir="$class.root" />
<delete file="$jar.dir/$jar.name" />
</target>
<target name="prepare" description="sets up build structures">
<mkdir dir="$class.root" />
</target>
<target name="compile" depends="prepare" description="Compiles all java classes">
<javac srcdir="$source.root" destdir="$class.root" debug="on" optimize="off" deprecation="on" source="1.8" target="1.8" includeantruntime = "false">
<classpath refid="project.class.path" />
</javac>
<mkdir dir="$class.root/$conf.pkj" />
<mkdir dir="$class.root/$imwg.pkj" />
<copy todir="$class.root/$conf.pkj">
<fileset dir="$source.root/$conf.pkj" />
</copy>
<copy todir="$class.root/$img.pkj">
<fileset dir="$source.root/$img.pkj" />
</copy>
</target>
<target name="jar" depends="compile">
<delete file="$jar.dir/$jar.name" quiet="true" failonerror="false" />
<jar destfile="$jar.dir/$jar.name">
<fileset dir="$class.root" includes="**/*.*" />
<fileset dir="$source.root" includes="**/api/*.java,**/api/vo/*.java"/>
<zipgroupfileset dir="$lib.dir" />
<manifest>
<attribute name="Main-Class" value="$Main-Class" />
<attribute name="Class-Path" value="." />
</manifest>
</jar>
</target>
<target name="run">
<java fork="true" classname="$Main-Class">
<classpath>
<path location="./$jar.name" />
</classpath>
</java>
</target>
【问题讨论】:
您没有加入问题。 What is the maximum number of files per jar?的可能重复 问题是无法使用 Java 1.8 和 ant 版本 1.9.6 创建 Jar。 【参考方案1】:在您的 jar
任务中指定 zip64Mode
参数,说明您需要使用大的“zip64”格式:
<jar destfile="$jar.dir/$jar.name" zip64Mode="always">
【讨论】:
谢谢greg-449。现在通过添加 zip64Mode="always" 来构建 Jar。 嗨,格雷格,我正在使用已创建的 jar 中的 launch4j 3.9 制作 exe,方法是按照您的建议在 jar zip64Mode 中添加参数。但是现在该 exe 无法正常工作,因为它与之前的案例一起工作。 launch4j 3.9 是否需要任何配置才能从 jar 构建 exe。我已经在我的 launch4j 配置文件中提到了以上是关于创建 jar 存档时出错,包含超过 65535 个条目的主要内容,如果未能解决你的问题,请参考以下文章
Gradle + Spring Boot 无法处理超过 65535 个文件的 jar
framework.jar 听说只能有65535个接口,并且不能调用其他JAR 包的接口?