Сбой команды jdeps при попытке разрешить jmods OpenJFX

Я пытаюсь запустить команду 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 ответ

Решение

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

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

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

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

Как объяснено здесь: http://openjdk.java.net/jeps/261:

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

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

Решение

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

jdeps --module-path Y:\javafx-sdk-11.0.2\lib --add-modules javafx.base Test.jar
Другие вопросы по тегам