Java 9中找不到模块javafx.controls [英] Module javafx.controls not found in Java 9
问题描述
我在两个文件中有两个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屋!