程序的一个实例发生了“JNI 错误”,另一个实例则没有

新手上路,请多包涵

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

当我对项目进行细微更改时,另一台计算机上出现了这个问题。这些更改只是基于内容的更改,不会对程序的功能产生影响。 从 eclipse 运行程序似乎没有问题。 但是,当我想运行新创建的 Jar 文件时,出现以下错误:

 Error: A JNI error has occurred, please check your installation and try again.

接着是一个框架说:

 A Java Exception has occurred.

所以我的问题是:

同一个程序的不同实例怎么可能不能通过 Jar 文件运行,而旧实例可以呢?

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

原文由 Robin Kramer-ten Have 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 527
2 个回答

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

原文由 Alex Cohn 发布,翻译遵循 CC BY-SA 3.0 许可协议

JNI 表示 Java Native Interface,意思是应用程序正在尝试加载本地库。这些本机库不是已编译 jar 文件的一部分。尝试找出您的应用程序需要哪些本机库,以及它是否安装在一台机器上而不是另一台机器上。还要检查您的运行配置。使用 JNI,您需要设置 -Djava.libary.path=<…> 参数以指向您的本机库。

原文由 loonytune 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题