当前位置: 首页 > 知识库问答 >
问题:

生成的JAR文件-出现JNI错误

祁乐邦
2023-03-14

我正在使用IntelliJ IDEA从LeanFT项目创建一个jar工件。

jar工件已生成,但带有以下错误消息:

发生JNI错误,请检查您的安装并重试

当试图直接执行jar文件时。

当我使用IDE执行时,它正在工作。不需要任何参数或参数值。当我从简单的“你好世界”生成一个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 sun.security.util.SignatureFileVerifier.processImpl(Unknown Source)
        at sun.security.util.SignatureFileVerifier.process(Unknown Source)
        at java.util.jar.JarVerifier.processEntry(Unknown Source)
        at java.util.jar.JarVerifier.update(Unknown Source)
        at java.util.jar.JarFile.initializeVerifier(Unknown Source)
        at java.util.jar.JarFile.getInputStream(Unknown Source)
        at sun.misc.URLClassPath$JarLoader$2.getInputStream(Unknown Source)
        at sun.misc.Resource.cachedInputStream(Unknown Source)
        at sun.misc.Resource.getByteBuffer(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

共有2个答案

章鸿光
2023-03-14

这可能与你电脑上安装的java版本有关。检查它是否与用于编译代码的java版本相同。

薛淳
2023-03-14

我查看了您收到的异常:Manifest主要属性的无效签名文件摘要。

是否使用已签名的 jar 文件作为项目的依赖项?如果是这样,当您生成包含依赖项的 jar 时,请尝试执行它 - JVM 会将生成的 jar 检测为对您正在使用的签名 jar 的操作。

以下是遇到此异常的问题列表:

  • JavaFX项目的有效JAR签名
  • 尝试运行. jar时的“无效签名文件”
  • Manifest主要属性的无效签名文件摘要
  • Re:[iText-问题]Manifest主要属性的无效签名文件摘要

按照上面的链接,找到对您有帮助的确切解决方案。解决方案取决于您在部署方面到底在做什么(具体说明您如何创建jar工件)。

 类似资料:
  • 当我试图使用命令: 错误:发生了JNI错误,请检查您的安装并在线程“main”java中重试。lang.NoClassDefFoundError:org/apache/http/client/ClientProtocolException 它在eclipse中运行良好。请帮忙。

  • 我试图使用javamail示例包中的ShowMsg.java读取gmail消息,但在运行时不断出现此错误。虽然程序编译得很好。 以下是错误消息: 我运行的命令是,编译它的命令是。javax.mail.jar包含在lib文件夹中 这是一些更短的替代代码,并得到相同的错误:

  • 问题内容: Java本机接口(JNI)不可或缺的一部分是通过C标头桥接JVM代码和本机代码。过去,生成这些头文件的方法非常简单:只需在类文件上调用命令行实用程序即可。然后,此过程将为使用修饰符标记的任何方法生成原型。 但是,从Java 10开始,该实用程序已被删除,建议的替代品是javac的新标志“ -h”。如果可以使用Java源文件,则替换可以正常工作,但是在只有编译的类文件可用的情况下,替换效

  • 导出的jar文件有问题。当我在Eclipse中运行项目时,它运行得很好,但是当我从控制台作为导出的jar运行它时,我收到以下错误消息: 代码如下: 我执行该方法的语法是

  • 运行hadoop jar文件时出现以下错误 线程“main”java中出现异常。lang.ClassNotFoundException:hdfs: 位于java。网URLClassLoader 1美元。在java上运行(URLClassLoader.java:366) 。网URLClassLoader 1美元。在java上运行(URLClassLoader.java:355) 。安全AccessC

  • 当我清理和构建时,Netbeans会生成一个。jar文件,它使用一个“lib”文件夹,其中包含我使用的所有外部jar文件。我是否可以告诉Netbeans将这些Jar文件打包到。罐子是什么?这样我就可以独立运行我的项目。jar文件? 我在Mac OSX上使用Netbean 7.1.1