Сбой команды jdeps при попытке разрешить jmods OpenJFX - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь запустить команду jdeps в проекте, который использует OpenJFX, но он продолжает сбой.

Используемая мной команда максимально упрощена:

jdeps --module-path Y:\javafx-jmods-11.0.2 --add-modules javafx.base Test.jar

javafx-jmods-11.0.2 - это каталог, содержащий jmod-файлы OpenJFX.

Когда я запускаю эту команду, я получаю сообщение об ошибке:

Exception in thread "main" java.lang.module.FindException: Module javafx.base not found
    at java.base/java.lang.module.Resolver.findFail(Resolver.java:877)
    at java.base/java.lang.module.Resolver.resolve(Resolver.java:128)
    at java.base/java.lang.module.Configuration.resolve(Configuration.java:411)
    at java.base/java.lang.module.Configuration.resolve(Configuration.java:245)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration.<init>(JdepsConfiguration.java:117)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.build(JdepsConfiguration.java:563)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.buildConfig(JdepsTask.java:589)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:543)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:519)
    at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)

Есть ли у кого-нибудь какие-либо идеи или предложения?почему он не может найти модуль javafx.base, который находится в Y: \ javafx-jmods-11.0.2?

1 Ответ

0 голосов
/ 20 февраля 2019

Обычно, когда вы получаете сообщение об ошибке:

java.lang.module.FindException: модуль ... не найден

, что означает, что путь к модулюневерно (нет правильного пути) или указанный вами путь не содержит требуемые модули.

Как вы можете видеть в ответе на Запуск примера javafx на JDK 11 с OpenJFX 11 JMODS на модулеПуть :

Как объясняется здесь: http://openjdk.java.net/jeps/261#Packaging:-JMOD-files:

Файлы JMOD могут использоваться во время компиляции и во время компоновки, но не во время выполнения.Для их поддержки во время выполнения требуется, как правило, то, что мы будем готовы извлекать и связывать библиотеки нативного кода на лету.

Что означает, что вы не можете использовать jmod в сочетании сjdeps.

Решение

В этом случае решение простое: используйте jar из JavaFX SDK , а не jmods:

jdeps --module-path Y:\javafx-sdk-11.0.2\lib --add-modules javafx.base Test.jar
...