当前位置: 首页 > 知识库问答 >
问题:

模块javafx。在Java 9中找不到控件

公风史
2023-03-14

我在两个文件中有两个JPMS模块:modulea.jarmoduleb.jar。Modulea需要javafx.controls模块。我需要在新图层中使用这些模块,所以我这样做:

ModuleFinder finder = ModuleFinder.of(modAPath, modBPath);
ModuleLayer parent = ModuleLayer.boot();
Configuration cf = parent.configuration().resolveAndBind(finder, ModuleFinder.of(), new HashSet<>());
ClassLoader scl = ClassLoader.getSystemClassLoader();
ModuleLayer newLayer = parent.defineModulesWithOneLoader(cf, scl);

我以为JDK模块会自动加载,但我发现

Exception in thread "main" java.lang.module.FindException: Module javafx.controls not found, required by modulea
    at java.base/java.lang.module.Resolver.findFail(Resolver.java:889)
    at java.base/java.lang.module.Resolver.resolve(Resolver.java:191)
    at java.base/java.lang.module.Resolver.bind(Resolver.java:297)
    at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:428)
    at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:230)

同时当我做:java--list-模块时,输出是:

...
javafx.base@9
javafx.controls@9
javafx.deploy@9
javafx.fxml@9
javafx.graphics@9
javafx.media@9
javafx.swing@9
javafx.web@9

怎么修?

共有1个答案

严正诚
2023-03-14

来自@AlanBateman的评论:

javafx。默认情况下不加载控件模块。您可以通过运行--add modules javafx将其强制进入引导层。控件

注意:从Java11开始,JavaFX是一个单独的项目。

 类似资料:
  • 我正在使用Eclipse和PowerShell。我已经用Eclipse将一个java项目导出到一个可运行的JAR(test13.05.jar)中,我想从PowerShell打开它。这个项目使用javafx,所以我已经将javafx-sdk-17.0.2文件复制到包含我的项目的文件夹中。 然后,我用PowerShell进入这个文件夹,键入 结果是: 错误:JavaFX运行时组件丢失,并且需要运行此应

  • 和太多其他人一样,我也有同样的问题,编译器找不到JavaFX模块。首先,我正在使用Eclipse,并在Eclipse中添加了我的JavaFX位置作为(像这样),添加了我的项目依赖项(像这样),并确保设置了(像这样)。 之后,我在中的中添加了以下参数: 这将导致以下消息: 初始化引导层 java.lang.module.FindException 时出错:找不到模块 javafx.base 我确实有

  • 问题内容: 我有以下目录结构: 我尝试在从server.js导出的app.js中调用函数,我这样做: 但是得到错误: 我如何正确包含它? 谢谢。 问题答案: 该路径必须相对于您当前所在的文件。 用

  • 我正在使用InteliJ,我已经经历了所有其他似乎对其他人都有效的解决方案。我遇到了一个错误: 然后,我在运行配置中将以下选项添加到VM选项中: 这似乎部分解决了问题?然而,当我试图运行它时,我没有得到一大堆错误的痕迹,我得到了这三行: 当我只在VM选项中输入以下内容时,我得到了相同的错误: 这是我的运行选项的图片(我已经勾选和取消勾选了“包含依赖项和G提供的范围”框,这两个选项都不起作用。 图书

  • 我用Anaconda创建了一个虚拟环境。激活后,我可以启动python3 shell并导入keras库,我得到以下警告,但在其他情况下它似乎可以工作。 /home/ryan/anaconda3/envs/spyderudemy/lib/python3.6/site packages/h5py/init.py:36:FutureWarning:将issubdtype的第二个参数从转换为。将来,它将被

  • 问题内容: 使用JDK / 11 的早期访问版本来编译基于Java-9且使用VM参数的现有代码 解决HTTP / 2客户端孵化器模块的问题 现在以编译错误结束 找不到模块:jdk.incubator.httpclient Java版本详细信息: 问题答案: 通过HTTP客户端API的标准化,现在可以删除已孵化的API。 现在,标准API的模块名称和软件包名称将 用作- 另外,将所有依赖类路径的应用