Пакеты Ubuntu, похоже, устанавливают библиотеки java в каталог / usr / share / java, но при попытке добавить этот путь в командную строку. Java пытается проверить каждый файл там и, похоже, терпит неудачу.
Пример:
$ java --module-path /usr/share/java --list-modules
Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for /usr/share/java/groovy.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class groovy not in module
(обратите внимание, что он также не работает на других файлах, jansi-native.jar - один)
Единственная другая проблема, которую я мог найти, обсуждая что-то похожее на эту проблему, это Tomcat6 libs и / usr / share / java в Ubuntu , но, надеюсь, сейчас есть лучшее решение, чем "стереть все и начать с нуля" «
На всякий случай:
$ java --version
openjdk 11.0.3 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu1, mixed mode)
Есть ли способ игнорировать неудачные проверки или я не понимаю, как правильно использовать эти модули?
редактирование:
Просто чтобы прояснить, проблема не только в groovy, а в проверке пути к Java-модулю. Если он не потерпит неудачу в Groovy, он потерпит неудачу в другом:
$ java --module-path /usr/share/java --list-modules
Error occurred during initialization of boot layer
java.lang.module.FindException: Two versions of module xom found in /usr/share/java (xom.jar and xom-1.2.10.jar)
/usr/share/java$ ls *xom* -la
-rw-r--r-- 1 root root 182373 Jul 26 2013 xom-1.2.10.jar
lrwxrwxrwx 1 root root 14 Jul 26 2013 xom.jar -> xom-1.2.10.jar
Я пытался удалить все пакеты, которые вызывали проблемы (либо из-за ошибки в модулях jar, либо по символическим ссылкам), до этого:
$ java --module-path /usr/share/java --list-modules
Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for /usr/share/java/jansi-native-1.8.jar
Caused by: java.lang.IllegalArgumentException: jansi.native: Invalid module name: 'native' is not a Java identifier
К сожалению, я не могу удалить этот пакет, так как он зависит от maven.