Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX 12-清单主属性的签名文件摘要无效_Java_Maven_Javafx_Jar_Jarsigner - Fatal编程技术网

JavaFX 12-清单主属性的签名文件摘要无效

JavaFX 12-清单主属性的签名文件摘要无效,java,maven,javafx,jar,jarsigner,Java,Maven,Javafx,Jar,Jarsigner,我正在开发JavaFX 12的一个示例,但在生成要执行的JAR文件时,我遇到了以下错误: java -jar target/JRPrintPreview-1.0-SNAPSHOT.jar Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.SecurityException: Invalid signature fil

我正在开发JavaFX 12的一个示例,但在生成要执行的JAR文件时,我遇到了以下错误:

java -jar target/JRPrintPreview-1.0-SNAPSHOT.jar 
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
    at java.base/sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:336)
    at java.base/sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:269)
    at java.base/java.util.jar.JarVerifier.processEntry(JarVerifier.java:316)
    at java.base/java.util.jar.JarVerifier.update(JarVerifier.java:230)
    at java.base/java.util.jar.JarFile.initializeVerifier(JarFile.java:758)
    at java.base/java.util.jar.JarFile.ensureInitialization(JarFile.java:1035)
    at java.base/java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(JavaUtilJarAccessImpl.java:69)
    at java.base/jdk.internal.loader.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:870)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:788)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:415)
    at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:760)
    at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:655)
我的样本在这里:

您可以使用终端中的命令进行测试:

mvn clean  
mvn compile
mvn package
java -jar target/JRPrintPreview-1.0-SNAPSHOT.jar 
我下了一个命令来给jar签名:

mvn jarsigner:sign
但不要产生任何效果(有必要吗?)

我搜索了很多,尝试过删除所有清单RSA和其他签名文件等

有人能帮我吗


谢谢。

我可以从您的
pom.xml
中看出,您正在使用maven shade插件来生成JAR。这将基本上将所有依赖项捆绑到一个(uber-)JAR文件中。uber请查看以下答案,这些答案可能会解决您的问题:

另请参见以下同一答案,该答案解释了可能存在的问题:

签名文件的存在表明这个jar的内容包含这些文件。当你制作一个uber jar时,你会向jar中添加更多的文件,因此签名是不正确的。如果你真的想,你可以重新签署新的罐子,但当然它将与你的签名,而不是旧的一个。或者,您不能分发uber jar,而是将已签名的jar作为一个单独的文件包含在内,但这首先会破坏uber jar的用途LadyCailin 1月22日12:45


我可以从您的
pom.xml
中看出,您正在使用maven shade插件来生成JAR。这将基本上将所有依赖项捆绑到一个(uber-)JAR文件中。uber请查看以下答案,这些答案可能会解决您的问题:

另请参见以下同一答案,该答案解释了可能存在的问题:

签名文件的存在表明这个jar的内容包含这些文件。当你制作一个uber jar时,你会向jar中添加更多的文件,因此签名是不正确的。如果你真的想,你可以重新签署新的罐子,但当然它将与你的签名,而不是旧的一个。或者,您不能分发uber jar,而是将已签名的jar作为一个单独的文件包含在内,但这首先会破坏uber jar的用途LadyCailin 1月22日12:45


您好,我已经这样做了,但是当删除此文件并尝试执行JAR时,我得到了:
错误:缺少JavaFX运行时组件,运行此应用程序需要这些组件
我已经完成了修复项目。我们需要JavaFX的启动器类,而不仅仅是应用程序类。我用修复程序更新了存储库。我在github上提出了一些其他问题,如果你也能帮忙的话,我会很高兴的。谢谢此问题已解决。您好,我已经这样做了,但是当删除此文件并尝试执行JAR时,我得到了:
错误:缺少JavaFX运行时组件,运行此应用程序需要这些组件
我已经完成了修复项目。我们需要JavaFX的启动器类,而不仅仅是应用程序类。我用修复程序更新了存储库。我在github上提出了一些其他问题,如果你也能帮忙的话,我会很高兴的。谢谢这个问题解决了。