运行 Windows 电源 shell 时发生错误。发生 JNI 错误,请检查您的安装并重试

Error occurred when running with Windows power shell. A JNI error has occurred, please check your installation and try again

每当我 运行 我的 java jar 使用 时,我收到“发生 JNI 错误,请检查您的安装并重试”错误“=25 =] -jar filename.jar" 命令 windows 功率 shell。每当我双击打开它时,它都可以正常工作。

我该如何解决这个问题?

提前致谢。

正如错误消息中所说的那样,您的 JRE 太旧了。安装更新的 JRE(并更新您的 PATH 和 JAVA_HOME)。

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

你说当你双击 JAR 文件(在 File Explorer 中)时它会起作用,但当你从 PowerShell window 中 运行 它时它不会起作用:

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

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

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

where.exe java

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

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

所以检查那些东西,即

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

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

您需要做的是确保包含编译为 JDK 11 的 java 代码的 JAR 文件是 运行,其中至少有一个 java.exe JDK11.

请注意,较高的 java 版本可以 运行 类 编译为较低的版本。换句话说,如果你的 JAR 被编译为 JDK 8,你可以 运行 它与 JDK 11,但不是相反(这是你的错误的原因,因为其他已注明)。