Сбой команды 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