【问题标题】:How to execute .Jar file with VM Arguments on AdoptOpenJDK 11 & JavaFX 11?如何在 AdoptOpenJDK 11 和 JavaFX 11 上使用 VM 参数执行 .Jar 文件?
【发布时间】:2020-03-24 22:32:27
【问题描述】:

我需要在JAR 文件中导出一个简短的测试应用程序,但是当我启动应用程序时出现错误:

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

A Java Exception has occurred

这是我的虚拟机参数:

--module-path ${PATH_TO_FX} --add-modules javafx.controls,javafx.fxml,javafx.swing

--add-opens
javafx.base/com.sun.javafx.runtime=ALL-UNNAMED
--add-opens
javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED
--add-opens
javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED
--add-opens
javafx.base/com.sun.javafx.binding=ALL-UNNAMED
--add-opens
javafx.base/com.sun.javafx.event=ALL-UNNAMED
--add-opens
javafx.graphics/com.sun.javafx.stage=ALL-UNNAMED
--add-opens
javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED

我需要所有这些参数,因为我使用:

  • AdoptOpenJDK 11 Hotspot
  • JavaFX 11

如果没有这个 vm 参数,我将无法运行我的应用程序。

如何导出此 VM 参数以在任何 PC 上使用我的应用程序?

【问题讨论】:

  • 您遇到的错误似乎与JNI 相关。可以分享Exception的内容吗?可能缺少一些原生库?

标签: java jar runtime-error executable-jar


【解决方案1】:

你应该可以像这样运行它:

> java --module-path modules --add-modules module_a,module_b -jar lib/your_jar_file.jar

【讨论】:

  • 我可以把它放在一个 bash 文件中吗?以及如何集成 --add-opens?
  • 或者我可以创建一个类来在启动状态下读取这个 vm 参数?
  • 只需创建一个长行:java ... --add-modules ... --add-opens ...
  • 在这里查看模块内调用代码的各种方式:github.com/mkowsiak/jnicookbook/tree/master/recipeNo064
猜你喜欢
  • 2019-05-01
  • 2021-08-15
  • 2019-03-05
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 2020-01-28
相关资源
最近更新 更多