下面是我的ant build jar目标:
<target name="build jar" depends="compile">
<mkdir dir="${dist.home}" />
<jar destfile="${dist.home}/${app.name}.jar" basedir="${build.home}/classes">
<zipgroupfileset dir="${lib.home}" includes="*.jar" excludes="*.RSA, *.SF, *.DSA, META-INF/MANIFEST.MF" />
<manifest>
<attribute name = "Main-Class" value = "com.karthik.publisher"/>
</manifest>
</jar>
</target>
当我从命令提示符运行/执行jar时,我收到以下错误
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: no manifiest section for signature file entry javax/mail/SecuritySupport.class
at sun.security.util.SignatureFileVerifier.verifySection(Unknown Source)
at sun.security.util.SignatureFileVerifier.processImpl(Unknown Source)
at sun.security.util.SignatureFileVerifier.process(Unknown Source)
正如您所看到的,我从每个jar中排除了RSA,SF和DSA文件以及MANIFEST.MF,但我仍然遇到此异常。
答案 0 :(得分:0)
excludes
任务中的build jar
定义仅涵盖jar文件根目录中的.RSA .SF和.DSA文件。但是它们位于META-INF
子目录中。
*.RSA
- &GT;涵盖要合并的zip / jar文件根目录中的RSA文件**/*.RSA
- &GT;涵盖要合并的zip / jar文件中的RSA文件META-INF/*.*
- &gt;涵盖META-INF目录中的所有文件我建议您使用第三种方法,因为我没有看到任何jar将文件放在合并jar的META-INF目录中的原因。