Ich habe versucht, eine JAR-Datei aus einem Java-Projekt, das einige externe Gläser verwendet. Ich habe einen lib-Ordner erstellt und alle benötigten Gläser dort abgelegt.Ungültige oder Corupt JAR-Datei
Ich führe das Projekt in Eclipse durch Hinzufügen aller Gläser im lib-Ordner zum Build-Pfad und es funktioniert ok.
Wenn ich versuche, das Glas mit Ant aus build.xml zu erstellen, scheint es in Ordnung, kein Fehler wird angezeigt.
Wenn ich versuche, das Glas zu starten, bekomme ich die Meldung "Ungültige oder korrupte JAR-Datei".
In build.xml: definiere ich den Weg zum Kompilieren zu verwenden:
<target name="compile" depends="init" description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}">
<classpath refid="project.classpath"/>
</javac>
</target>
Und dies ist das Ziel für die Herstellung des Glases:
<path id="project.classpath">
<fileset dir="${lib}">
<include name="**/*.jar"/>
</fileset>
</path>
Das das Ziel für die Zusammenstellung ist Datei:
<target name="dist" depends="compile" description="generate the distribution" >
<mkdir dir="${dist}"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/MyProject-${DSTAMP}.jar" basedir="${build}">
<manifest>
<attribute name="Main-Class" value="${main}" />
<attribute name="Class-Path:" value="lib/**/*.*"/>
</manifest>
<fileset dir="${src}" includes="images/**/*.*" />
</jar>
<echo file="${dist}/start.bat" message="java -jar MyProject-${DSTAMP}.jar" />
</target>
Können Sie mir bitte sagen, was habe ich falsch gemacht?
Es funktionierte mit dem manifestclasspath. Das Problem war in der Tat, dass die Jar Namen viel zu lang waren als die 72 erlaubten Zeichen. –
Zeilen in MANIFEST.MF sind wrappable. Ich denke auch, der Schuldige ist der zusätzliche Doppelpunkt. –
+1 für den Manifestclasspath. Habe die neuen Goodies seit dem 1.6.2 nicht mehr angeschaut, also ist das eine nette Ergänzung. –