2016-07-26 5 views
1

Ich versuche, eine * .jar-Datei mit Apache Ant zu erstellen. Ich beginne mit einem Kompilierung Ziel:Java/Ant-JAR-Datei SecurityException

<target name="pdfcompile"> 
    <property name="pdfclasses.dir" value="pdfclasses" /> 
    <property name="pdfsrc.dir" value="src/com/mespas/client/pdfviewer" /> 
    <mkdir dir="${pdfclasses.dir}"/> 
    <javac srcdir="${pdfsrc.dir}" destdir="${pdfclasses.dir}" classpathref="path.pdf" /> 
</target> 

mit path.pdf definiert ist wie folgt:

<path id="path.pdf"> 
    <pathelement path="${project.client.lib.dir}/rhino.jar" /> 
    <pathelement path="${project.client.lib.dir}/jPDFViewer.jar" /> 
</path> 

Nach dem Kompilieren Ziel ich das Glas bauen will:

<target name="pdfjar" depends="pdfcompile" > 
    <property name="jar.file" value="mespasPdfViewer.jar" /> 
    <property name="jar.file" value="mespasPdfViewer.jar" /> 
    <property name="main-class" value="com.mespas.client.pdfviewer.MespasPDFViewer" /> 
    <property name="pdfclasses.dir" value="pdfclasses" /> 

    <mkdir dir="${jar.dir}"/> 
    <mkdir dir="${jar.dir}/lib"/> 
    <copy file="${project.client.lib.dir}/rhino.jar" tofile="${jar.dir}/lib/rhino.jar"/> 
    <copy file="${project.client.lib.dir}/jPDFViewer.jar" tofile="${jar.dir}/lib/jPDFViewer.jar"/> 

    <jar destfile="${jar.dir}/${jar.file}" basedir="${pdfclasses.dir}" > 
     <zipgroupfileset dir="${jar.dir}/lib" includes="rhino.jar jPDFViewer.jar" excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/> 
     <manifest> 
      <attribute name="Main-Class" value="com.mespas.client.pdfviewer.MespasPDFViewer"/> 
     </manifest>   
     <fileset dir="${project.classes.dir}"> 
      <include name="com/mespas/client/pdfviewer/*.class" /> 
     </fileset> 
    </jar> 

    <copy file="${jar.dir}/${jar.file}" tofile="${project.client.lib.dir}/${jar.file}" overwrite="true" /> 
    <delete file="${jar.file}"/> 
    <delete includeEmptyDirs="true"> 
     <fileset dir="${pdfclasses.dir}" /> 
    </delete> 

</target> 

Der Build funktioniert gut, aber wenn ich versuche, das Glas zu starten, bekomme ich die folgende Ausnahme:

Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 

Was mache ich falsch? Ich schließe den META-INF-Ordner aus den externen JAR-Dateien aus (rhino.pdf und jPDFViewer.pdf), erhalte diese Ausnahme jedoch immer noch, wenn ich das JAR-Programm starte. Danke für irgendwelche Hinweise.

Antwort

0

Ich habe es geschafft, eine Lösung zu finden, die gut funktioniert. Ich habe das Build-Ziel wie folgt angepasst:

Dies ermöglichte dem Skript, die Signatur vor dem Umpacken des JAR zu entfernen.

Verwandte Themen