首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java11启动JavaFX应用程序?

如何使用Java11启动JavaFX应用程序?
EN

Stack Overflow用户
提问于 2018-11-06 23:12:48
回答 1查看 1.3K关注 0票数 4

假设我安装了Oracle JDK 11 (只是为了使事情更简单)。然后我下载了胶子的JavaFX 11,并在JDK之上解压缩。实际上,我在哪里解压缩JavaFX并不重要(因为我的下一个目标是基于OpenJRE制作自己的JRE安装程序)。然后我尝试启动应用程序:

代码语言:javascript
复制
c:\Program Files\MyApp>"c:\Program Files\Java\jre-11\bin\java" 
                              --module-path="c:\Program Files\Java\jre-11\lib" 
                              --add-modules=javafx.controls 
                              --add-modules=javafx.base -jar ./MyApp.jar

我明白了:

在初始化启动层java.lang.LayerInstantiationException:模块java.base和模块jrt.fs中的包jrt.fs时发生错误

我尝试删除"jrs.fs“,然后我的应用程序崩溃,因为与类加载程序相关的一些重要的系统类丢失了。用Java11启动JavaFX应用程序的正确方法是什么?现在,我是否需要每次在每个应用程序中重新分发JavaFX (因为现在它的位置必须在启动应用程序的命令行中指定)。

EN

回答 1

Stack Overflow用户

发布于 2018-11-18 00:18:08

我已经发现,当从Java 8转换到Java11时,您只需将OpenJfx作为Maven下的依赖项添加(假设您正在使用Maven)。例如

代码语言:javascript
复制
<dependency>
  <groupId>org.openjfx</groupId>
  <artifactId>javafx-controls</artifactId>
  <version>11.0.1-ea+1</version>
</dependency> etc

然后你就可以跑了

代码语言:javascript
复制
java  -cp .;.\lib --module-path .\lib;. --add-modules javafx.controls,javafx.graphics,javafx.fxml,javafx.web,javafx.swing -jar MyApp.jar

其中Java 11位于Path中,所有Maven依赖项(模块化或其他)都位于lib子目录中。模块依赖关系必须添加到add-modules列表中。

我随后发现,如果模块放在另一个目录中,例如javafx模块(加上添加模块中的任何内容),问题就会更少。

代码语言:javascript
复制
java  -cp .;.\lib --module-path .\modules;. --add-modules javafx.controls,javafx.graphics,javafx.fxml,javafx.web,javafx.swing -jar MyApp.jar
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53181484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档