【问题标题】:java/ant jar file SecurityExceptionjava/ant jar 文件 SecurityException
【发布时间】:2016-07-26 12:03:07
【问题描述】:

我正在尝试使用 apache ant 构建 *.jar 文件。我从一个编译目标开始:

<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>

带有path.pdf的定义如下:

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

编译目标后我要构建jar:

<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>

构建工作正常,但是当我尝试启动 jar 时出现以下异常:

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

我做错了什么?我从外部 jar(rhino.pdf 和 jPDFViewer.pdf)中排除了 META-INF 文件夹,但在启动 jar 时仍然出现此异常。感谢您的任何指示。

【问题讨论】:

    标签: java ant jar


    【解决方案1】:

    我设法找到了一个很好的解决方案。我调整了构建目标如下:

    <target name="pdfjar" depends="pdfcompile" >
        <property name="jar.file" value="mespasPdfViewer.jar" />
        <property name="jar.dir" value="pdfViewer" />
        <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 jarfile="${jar.dir}/deps.jar">
            <zipgroupfileset dir="${jar.dir}/lib">
                <include name="**/*.jar" />
            </zipgroupfileset>
        </jar>
        <sleep seconds="1" />
        <jar jarfile="${jar.dir}/mespasPdfViewer.jar" basedir="${pdfclasses.dir}">
            <zipfileset src="${jar.dir}/deps.jar" excludes="META-INF/*.SF" />
            <manifest>
                <attribute name="Main-Class" value="com.mespas.client.pdfviewer.MespasPDFViewer" />
            </manifest>
        </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>
    

    这允许脚本在重新打包 jar 之前删除签名。

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 2011-03-03
      • 2014-06-24
      • 2020-04-08
      • 2013-03-09
      相关资源
      最近更新 更多