2016-09-16 67 views
3

我想構建一個jar文件並且出現錯誤生成失敗。創建jar文檔時出錯包含超過65535個條目

問題創建jar:歸檔包含超過65535個條目。 (和存檔可能是腐敗的,但我不能刪除它)

我使用Eclipse霓虹發佈1與JDK 1.8.0_101和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> 

+0

您還沒有收錄曲目estion。 – nitind

+0

可能重複[每個jar的最大文件數是多少?](http://stackoverflow.com/questions/9616250/what-is-the-maximum-number-of-files-per-jar) –

+0

問題是我無法使用Java 1.8和Ant 1.9.6創建Jar。 –

回答

9

指定在jar任務zip64Mode爭論說,你需要使用大的 'ZIP64' 格式:

<jar destfile="${jar.dir}/${jar.name}" zip64Mode="always"> 
+0

感謝greg-449。 Jar現在通過添加zip64Mode =「always」來構建。 –

+0

嗨格雷格,我正在使用launch4j 3.9從創建的jar通過添加參數在罐子zip64Mode如您所建議的。但是現在這個exe並沒有像之前的情況那樣工作。 launch4j 3.9是否需要使用jar來構建exe。我已經在我的launch4j配置文件中提到了 1.8.0。 –

+0

我對launch4j沒有任何瞭解 –

相關問題