栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在JDK 11上使用模块路径上的OpenJFX 11 JMODS运行javafx示例

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在JDK 11上使用模块路径上的OpenJFX 11 JMODS运行javafx示例

我相信对您遇到的错误有一个解释: jmods不能在运行时使用

这在这里解释:http :
//openjdk.java.net/jeps/261#Packaging : -JMOD-files:

JMOD文件可以在编译时和链接时使用,但不能在运行时使用。为了在运行时支持它们,通常要求我们准备好即时提取和链接本机代码库。

因此,我完成了一些简单的模块

hellofx

module hellofx {    requires javafx.controls;    exports hellofx;}

HelloFX
从样品这里并下载JavaFX的11
jmods我的平台,在这里。我还从同一位置下载了JavaFX 11
SDK(罐)。

编译时间

在编译时,我们可以使用jmods:

javac -p /path-to/javafx-jmods-11/ -d mods/hellofx $(find src/hellofx -name "*.java")

或使用SDK:

javac -p /path-to/javafx-sdk-11/lib -d mods/hellofx $(find src/hellofx -name "*.java")

在这两种情况下,结果都与预期的完全相同:在编译时不需要本机库。

运行

现在我们要运行我们的小模块。

如OP所述,使用jmods运行:

java -p /path-to/javafx-jmods-11/:mods -m hellofx/hellofx.HelloFX

失败:

Error occurred during initialization of boot layer  java.lang.module.FindException: Module javafx.controls not found, required by hellofx

但是使用SDK可以:

java -p /path-to/javafx-sdk-11/lib/:mods -m hellofx/hellofx.HelloFX

链接时间

如JEP-261所述,jmods在链接时也能正常工作,因此我们可以

jlink
在编译时和运行时之间使用该工具。

您可以使用jlink工具将一组模块及其依赖项组装和优化到自定义运行时映像中。(来源)

因此,我们来做:

jlink -p /path-to/javafx-jmods-11/:mods --add-modules=hellofx --output links

这将生成一个90.7 MB的文件夹(在我的Mac上)。请注意,该

lib
文件夹包含Java 11和JavaFX
11所需的所有本机库,以及一个名为的70.5 MB文件
modules

播放时间(2)

我们终于可以做到:

links/bin/java -m hellofx/hellofx.HelloFX

那将起作用。

总之,如果只想使用jmods来编译和运行模块,则需要使用额外的步骤

jlink
。否则,对于运行时,我们将需要JavaFX SDK。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452963.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号