【问题标题】:Error creating jar archive contains more than 65535 entries创建 jar 存档时出错,包含超过 65535 个条目
【发布时间】: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>

【问题讨论】:

标签: java eclipse ant


【解决方案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 配置文件中提到了 1.8.0
  • 我对launch4j一无所知
  • 上述ant.xml配置文件中java 1.8是否需要其他配置,因为我的jar找不到.classfiles。
猜你喜欢
  • 2016-04-22
  • 2018-11-11
  • 2019-04-20
  • 2018-11-11
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 1970-01-01
相关资源
最近更新 更多