我在IntelliJ中创建了一个JAR工件,并带有将JAR文件提取到目标JAR的选项。看起来像这样:
我正确填写了清单信息:
我用ZIP检查了JAR文件的内容,其中包含jar文件,正确填充的MANIFEST.MF和项目的.class文件。
但是,如果我尝试运行它,则会丢弃错误:
d:\Own_Tools\REF_Standalone\build>java -jar REF_Standalone.jar
Error: Could not find or load main class com.continental.ref.REFController
我非常确定它包含com \ continental \ ref \ REFController.class。
您是否知道出了什么问题?
谢谢: 莱万特
答案 0 :(得分:1)
apache-commons.jar
是经过数字签名的(您可以通过FILETEST.DSA
目录中的FILETEST.SF
和META-INF
进行标识。
打包人工制品jar时,这些文件将复制到新jar中,但它们不包含新jar中其他类的签名。
这破坏了jar签名,并且出于安全原因,JVM不允许执行jar。
有关解决方法,请参见my another answer(只需从*.SF
删除*.DSA
和apache-commons.jar
文件并重建工件)。