对于程序的一个实例,"发生了JNI错误",而不是另一个实例

Rob*_*mer 4 java eclipse java-native-interface compiler-errors java-8

我在一台运行良好的计算机上用Eclipse Java Mars制作了一个大型程序.我将程序导出为可运行的Jar文件并运行它没有任何问题.即使我将整个项目导出到另一台计算机,该程序仍然有效.

当我对项目进行细微更改时,问题出现在另一台计算机上.这些更改只是基于内容的更改,并且应该对程序的功能没有任何影响.从eclipse运行程序似乎没有问题.但是,当我想运行新创建的Jar文件时,我收到以下错误:

Error: A JNI error has occurred, please check your installation and try again. 
Run Code Online (Sandbox Code Playgroud)

然后是框架说:

A Java Exception has occurred. 
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

如何通过Jar文件不能运行同一程序的不同实例,而旧实例可以?

我在两台计算机上使用相同的JDK版本(1.8.0_73),并以几乎相同的方式安装它们:我首先通过组合版本将NetBeans与NetBeans一起安装.接下来,我安装了Eclipse.唯一的区别是在新计算机上我安装了脱机eclipse,即没有Eclipse安装程序

loo*_*une 6

JNI表示Java Native Interface,这意味着应用程序正在尝试加载本机库.那些本机库不是编译的jar文件的一部分.尝试找出应用程序所需的本机库,并将其安装在一台而不是另一台机器上.还要检查运行配置.使用JNI,您需要将-Djava.libary.path = <...>参数设置为指向本机库.

  • 也许"导出"在旧计算机上配置得更好 (3认同)
  • @AlexCohn哇.我首先认为你的评论有点模糊,但这确实是个问题.我选择了错误的选项.我没有在"生成的JAR中打包所需的库",而是在新计算机上选择"将所需的库提取到生成的JAR中".非常感谢! (2认同)

Ale*_*ohn 5

Eclipse 提供了为项目导出 JAR 的不同方法。要在运行导出的 JAR 时使用本机库(或多个库),请选择“在生成的 JAR 中打包所需的库”选项。