0

我收到“发生 JNI 错误,请检查您的安装并重试”错误每当我使用带有 Windows Power Shell 的“java -jar filename.jar”命令运行我的 java jar 时。每当我双击打开它时它都可以正常工作。

我该如何解决这个问题?

错误截图

提前致谢。

4

2 回答 2

1

正如它在错误消息中非常清楚地说明的那样,您的 JRE 太旧了。安装更新的 JRE(并更新您的 PATH 和 JAVA_HOME)。

此外,当您也可以将错误消息粘贴为文本时,请不要将它们作为屏幕截图发布。

于 2020-07-30T11:17:59.513 回答
1

您说当您双击 JAR 文件(在File Explorer中)时它有效,但当您从该文件夹中的 PowerShell 窗口运行它时无效:

C:\incubating-netbeans-11.0-bin\netbeans\ani\Tank-IQ-Display-Configurator\Tank-IQ-Display-Configurator\dist

我猜你安装了不止一个 JDK。

如果在 PowerShell 窗口中输入以下命令,它将显示所有java.exe文件的路径。

where.exe java

Windows 将文件扩展名与可执行文件相关联。显然,在您的计算机上,.jar扩展名与java.exe. 您可以通过控制面板进行检查。寻找默认应用程序因此,当您在文件资源管理器中双击 JAR 时,将启动相关的可执行文件。

我猜默认的可执行文件是 JDK 11 的,或者在我上面写的路径的文件夹中有一个java.exe与 JDK 8 兼容的文件夹,或者在你的 PATH 环境变量中,JDK 8 可执行文件的路径在JDK 11 可执行文件的路径。

所以检查那些东西,即

  1. Windows 中的默认应用
  2. PATH 环境变量

显然,有许多不同的方法可以纠正这种情况。我不认为任何一个明显优于,最合适的取决于你的环境和你的需求,我不知道因为你没有提供这些细节,因此我不会建议你应该采取什么行动解决您的问题。

您需要做的是确保包含编译到 JDK 11 的 java 代码的 JAR 文件java.exe至少使用 JDK 11 运行。

请注意,较高的 java 版本可以运行编译为较低版本的类。换句话说,如果您的 JAR 编译为 JDK 8,您可以使用 JDK 11 运行它,但不能反过来(正如其他人指出的那样,这是您的错误的原因)。

于 2020-07-30T11:52:57.277 回答