我收到“发生 JNI 错误,请检查您的安装并重试”错误每当我使用带有 Windows Power Shell 的“java -jar filename.jar”命令运行我的 java jar 时。每当我双击打开它时它都可以正常工作。
我该如何解决这个问题?
提前致谢。
我收到“发生 JNI 错误,请检查您的安装并重试”错误每当我使用带有 Windows Power Shell 的“java -jar filename.jar”命令运行我的 java jar 时。每当我双击打开它时它都可以正常工作。
我该如何解决这个问题?
提前致谢。
正如它在错误消息中非常清楚地说明的那样,您的 JRE 太旧了。安装更新的 JRE(并更新您的 PATH 和 JAVA_HOME)。
此外,当您也可以将错误消息粘贴为文本时,请不要将它们作为屏幕截图发布。
您说当您双击 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 可执行文件的路径。
所以检查那些东西,即
显然,有许多不同的方法可以纠正这种情况。我不认为任何一个明显优于,最合适的取决于你的环境和你的需求,我不知道因为你没有提供这些细节,因此我不会建议你应该采取什么行动解决您的问题。
您需要做的是确保包含编译到 JDK 11 的 java 代码的 JAR 文件java.exe
至少使用 JDK 11 运行。
请注意,较高的 java 版本可以运行编译为较低版本的类。换句话说,如果您的 JAR 编译为 JDK 8,您可以使用 JDK 11 运行它,但不能反过来(正如其他人指出的那样,这是您的错误的原因)。