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);
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)
At the same time when I do: java --list-modules
, the output is:
...
javafx.base@9
javafx.controls@9
javafx.deploy@9
javafx.fxml@9
javafx.graphics@9
javafx.media@9
javafx.swing@9
javafx.web@9
How to fix it?
If this is your case also, you can do fix this by simply right-clicking on the javaFX project folder-> Build Path-> Configure Build Path-> Select JavaFX SDK-> Remove library-> Select classpath -> add library-> user library-> select library-> apply. Save this answer.
For JDK 11 and later releases, Oracle has open sourced JavaFX. You can find more information at OpenJFX project.
It is bundled in the current JDK 9 and will remain in JDK 10, due this spring. Commercial support for JavaFX in JDK 8 will continue through at least 2022. Featuring a set of packages for graphics and media, JavaFX has been part of the JDK download since 2012.
From @AlanBateman's comment:
The javafx.controls
module is not loaded by default. You can force it into the boot layer by running with --add-modules javafx.controls
.
NOTE: Starting with Java 11 JavaFX is a separate project.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With