我已经从OpenJFX项目下载了JavaFX Jmod文件,并将它们放在目录中G:\openjfx\javafx-jmods-11
。我正在使用没有JavaFX jmod的OpenJDK 11,JAVA_HOME/jmods
即它没有JavaFX发行版。
模块信息文件:
module gui{
requires javafx.graphics;
requires javafx.controls;
exports com.test;
}
我编译如下:
javac -p G:\openjfx\javafx-jmods-11 -d mods --module-source-path src
src\gui\com\test\*.java src\gui\module-info.java
编译成功。但是我无法使用以下命令运行编译后的代码:
java -p G:\openjfx\javafx-jmods-11;mods -m gui/com.test.CreateGuiDemo
但是我收到以下错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.graphics not found, required by gui
我相信对您遇到的错误有一个解释: 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。
我有一个基于官方指南的简单Spring项目来使用Web服务。此示例似乎针对JDK 8,但我想使用最新的LTS JDK 11。 我已经改编了pom。xml文件,并添加了一些似乎已从JDK中删除的依赖项,即: 但是,我似乎无法启动应用程序,我总是得到这个错误: 尽管至少有两个问题(这个和这个)与这个主题相关,但我已经尝试了在这些帖子中可以找到的所有版本组合,我仍然有相同的错误。 我使用的特定JDK m
作为一个软件开发人员,我需要做哪些步骤来允许我的JavaFX应用程序与JDK11+一起运行?有什么好的广告吗?是否可以通过Gradle获得OpenJDK?
问题内容: 我有一个模块foo,包含util.py和bar.py。 我想将其导入IDLE或python会话中。我该怎么办? 我找不到关于如何在当前目录或默认python PATH中导入模块的文档。经过尝试后, 我能得到的最接近的是 这给了我在Windows 7上拒绝的权限。 问题答案: 一种方法是简单地修改路径: 请注意,这要求foo为python包,即包含一个文件。如果您不想修改,也可以修改环境
我所有关于如何在NetBeans上设置JavaFX的尝试都陷入了困境,因为旧版本的说明现在似乎不起作用。如果我使用file | new project | JavaFX Applicationm,我会得到以下信息: 但是,如果我转到Platform Manager并创建一个非默认JavaSE平台,则没有JavaFX选项卡。 任何地方都有最新的说明吗?
我有一个用Java8写的项目,我想把它更新到Java9。所以我把这些类分成了两个独立的模块。模块: 和目录中的。在我开始更新到Java9之前,它的构建是用Gradle自动化的。该模块使用模块中包含的抽象类实现。 在目录 中的 。我想使用Maven自动构建它。模块需要模块。 文件树类似于: 或 base/src/main/java/org/ggp/base/validator/opnfvalidat
我正面临一个烦人的问题。下面是历史: 我们使用的是(测试环境)并且部署工作正常 我做了一个部署,但没有奏效。我们的解决方案至少需要V12.1.2,因此我卸载了12.1.1并安装了 在安装新版本之前,我完全删除了文件夹,并从头创建了 我在静默模式下安装了WebLogic12.1.3,并创建了我的测试域。域中只有管理服务器和一个独立的托管服务器(没有群集,没有大量托管服务器) 我进行了部署,但Webl