我在/ libs /中有一些jar文件,我的项目类位于/ target /.删除对外部文件夹的依赖性.我想制作一个合并jar文件.其中包含所有/libs/*.jar中找到的jar文件中的所有类
我正在使用以下Ant脚本:
<jar destfile="mytest.jar" basedir="target/classes">
<manifest>
<attribute name="Main-Class" value="com.mytest.MyProcessor"/>
</manifest>
<fileset dir="target/classes" includes="**/*.class"/>
<zipgroupfileset dir="libs" includes="*.jar"/>
</jar>
Run Code Online (Sandbox Code Playgroud)
但是,当我使用"java -jar mytest.jar"命令运行jar时,它说:
线程"main"中的异常java.lang.SecurityException:sun.security.util.Suature.SignatureFileVerifier中sun.security.util.SignatureFileVerifier.verifySection(未知来源)的签名文件条目javax/mail/internet/ContentDisposition.class没有最明显的部分.processImpl(未知来源)
任何想法,如何制作一个没有这些问题的统一罐子,将受到高度赞赏.我正在使用IntelliJ IDEA.
线程"main"中的异常java.lang.SecurityException:签名文件条目没有最明显的部分
此错误消息确切地说明了为什么不建议将捆绑jar用于生产版本.问题是你的一些依赖jar用签名文件签名.重新包装它可能会违反依赖jar上的某些安全策略.
要使其工作,您需要从已签名的jar中删除所有签名文件,然后将解压缩的文件复制到最终的构建jar文件中.请注意,<zipgroupfileset>不支持jar存档中的排除文件,请尝试使用<zipfileset>列表:
<zipfileset src="libs/mail.jar">
<exclude name="**/*.RSA, **/*.SF, **/*.DSA"/>
</zipfileset>
... ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12613 次 |
| 最近记录: |