java - JavaFX .jar 不工作(启动层初始化期间发生错误)
问题描述
在我的 IDE (IntelliJ) 中,程序运行没有任何问题。我尝试通过 IDE 创建一个 JavaFX .jar,但它不起作用,但这似乎是 JavaFX 和 JDK 11 之间已知的兼容性问题。
在此之后,我尝试创建一个普通的 .jar 并通过以下命令执行它:
java --module-path "C:\Users\nerla\Desktop\Coding\JavaFX_SDK\javafx-sdk-11.0.2\lib" --add-modules=javafx-swt,javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web -jar "C:\Users\nerla\Desktop\Uni\Programming II\Mathdoku\out\artifacts\Mathdoku_jar\Mathdoku.jar"
它仍然不起作用并产生以下错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx-swt not found
解决方案
在使用 JavaFX 11 创建的 JAR 工作时,我遇到了类似的问题。
解决方法是:
- 在一个不扩展应用程序的类中创建一个额外的 main 方法,只调用你真正的 main 方法。
- 在 JAR 中包含 .so 文件。
要在 IntelliJ 中做到这一点,它是:
文件 > 项目结构 > 工件 > 单击“+”符号 > 文件 > 然后选择 JavaFX 文件夹中的所有 .so 文件。
推荐阅读
- puppet - 您可以使用 puppet 资源属性而不是 puppet fact 来运行条件语句吗?
- sql - 使用自动增量后重复使用手动输入
- java - 线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/commons/lang3/ObjectUtils
- java - 单元测试中的 ArgumentCaptor 用法
- c# - 使用 DbSet 的 Update() 方法时如何停止跟踪给定的实体?
- python - Python只请求一定数量的字节
- docker - `docker load` 时如何保持图层(没有壁球)
- twitter - 有没有办法找到喜欢或转发推文的人
- firebase - 使用 Jest 和 Firebase 进行单元测试
- sql - 使用多个表循环访问数据库(并返回 SUM)