web-dev-qa-db-fra.com

Module javafx.controls non trouvé dans Java 9

J'ai deux modules JPMS dans deux fichiers: modulea.jar et moduleb.jar. Modulea nécessite le module javafx.controls. Je dois utiliser ces modules dans la nouvelle couche, donc je fais:

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);

Je pensais que les modules JDK seraient chargés automatiquement mais je reçois

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)

En même temps, quand je le fais: Java --list-modules, le résultat est:

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

Comment le réparer?

6
Pavel_K

Commentaire de @ AlanBateman:

Le module javafx.controls n'est pas chargé par défaut. Vous pouvez le forcer dans la couche de démarrage en exécutant --add-modules javafx.controls.

REMARQUE: à partir de Java 11, JavaFX est un projet séparé.

0
Pavel_K