Java 9中找不到模块javafx.controls [英] Module javafx.controls not found in Java 9

查看:3487
本文介绍了Java 9中找不到模块javafx.controls的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have two JPMS module in two files: modulea.jar and moduleb.jar. Modulea requires javafx.controls module. I need to use these modules in new layer, so I do:

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模块会自动加载但我得到了

I thought that JDK modules will be loaded automatically but I get

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-modules ,输出为:

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

如何解决?

推荐答案

来自@ AlanBateman的评论:

From @AlanBateman's comment:

javafx.controls 默认情况下不加载模块。您可以通过 - add-modules javafx.controls 运行来强制它进入引导层。

The javafx.controls module is not loaded by default. You can force it into the boot layer by running with --add-modules javafx.controls.

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

NOTE: Starting with Java 11 JavaFX is a separate project.

这篇关于Java 9中找不到模块javafx.controls的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆