Я искал ответ. Я не нашел хорошего решения.
В соответствии с этим кажется, что Groovy в настоящее время не совсем совместим с Java модулями. Это связано с тем, что некоторые пакеты содержатся в нескольких банках библиотеки (несовместимы с модулями). Вам придется подождать Groovy 4 для совместимой версии.
Я обнаружил, что плагин JavaFX использует этот плагин для внутреннего использования. Кажется, этот плагин учитывает, что все зависимости являются модулями (это не стандартное поведение Gradle).
Чтобы ваше приложение работало, кажется, что вы должны:
- заставить Gradle поместить Groovy в путь к классам вместо пути к модулю (это не будет рассматриваться как модуль, но кажется невозможным, если вы используете плагин javafx)
- использовать систему «patch-module»: это позволяет Gradle объединить библиотеки библиотек в один модуль, чтобы предотвратить проблему пакетов, которые находятся в разных банках
Я искал в банках Groovy с IDEA (структура проекта / библиотеки), и я попытался использовать синтаксис, предлагаемый плагином для использования "patch-module":
patchModules.config = [
"org.codehaus.groovy=groovy-ant-3.0.1.jar",
"org.codehaus.groovy=groovy-cli-picocli-3.0.1.jar",
"org.codehaus.groovy=groovy-console-3.0.1.jar",
"org.codehaus.groovy=groovy-datetime-3.0.1.jar",
"org.codehaus.groovy=groovy-docgenerator-3.0.1.jar",
"org.codehaus.groovy=groovy-groovydoc-3.0.1.jar",
"org.codehaus.groovy=groovy-groovysh-3.0.1.jar",
"org.codehaus.groovy=groovy-jmx-3.0.1.jar",
"org.codehaus.groovy=groovy-json-3.0.1.jar",
"org.codehaus.groovy=groovy-jsr-3.0.1.jar",
"org.codehaus.groovy=groovy-macro-3.0.1.jar",
"org.codehaus.groovy=groovy-nio-3.0.1.jar",
"org.codehaus.groovy=groovy-servlet-3.0.1.jar",
"org.codehaus.groovy=groovy-sql-3.0.1.jar",
"org.codehaus.groovy=groovy-swing-3.0.1.jar",
"org.codehaus.groovy=groovy-templates-3.0.1.jar",
"org.codehaus.groovy=groovy-test-junit-3.0.1.jar",
"org.codehaus.groovy=groovy-test-3.0.1.jar",
"org.codehaus.groovy=groovy-testng-3.0.1.jar",
"org.codehaus.groovy=groovy-xml-3.0.1.jar"
]
Он работает только с одной строкой "org.codehaus.groovy = X.jar", но ошибка не позволяет ему работать со всеми библиотеками jar (посмотрите на эту проблему на Github).
Таким образом, у вас есть несколько вариантов:
- Используйте Java вместо Groovy
- Ждите нового выпуска Groovy, или новые выпуски плагинов (modules-plugin, и версия javafx-plugin, которые используют th внутренняя единица)
- Использовать старую конфигурацию javafx: по умолчанию зависимости не являются модулями, и вы должны вручную указать в build.gradle, что зависимости JavaFX следует рассматривать как модуль (отметьте my "устаревший") ответ на этот вопрос )