尝试使用/usr/share/java作为ubuntu中java模块的模块路径时出现的问题

尝试使用/usr/share/java作为ubuntu中java模块的模块路径时出现的问题,java,ubuntu,groovy,java-11,java-module,Java,Ubuntu,Groovy,Java 11,Java Module,Ubuntu软件包似乎在/usr/share/java目录中安装java库,但在尝试将此路径添加到命令行时。Java试图验证其中的每个文件,但似乎失败了。 例: (注意,它在其他文件上也会失败,jansi-native.jar就是其中之一) 在讨论类似问题时,我唯一能找到的另一个问题是,希望现在有比“一刀切,从头开始”更好的解决方案 以防万一: $ java --version openjdk 11.0.3 2019-04-16 OpenJDK Runtime Environment (buil

Ubuntu软件包似乎在/usr/share/java目录中安装java库,但在尝试将此路径添加到命令行时。Java试图验证其中的每个文件,但似乎失败了。 例:

(注意,它在其他文件上也会失败,jansi-native.jar就是其中之一)

在讨论类似问题时,我唯一能找到的另一个问题是,希望现在有比“一刀切,从头开始”更好的解决方案

以防万一:

$ 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的依赖项。

讨论了提供程序类groovy不在模块中的解决方案。我在一篇类似的文章中对原因进行了解释。旁白:确保您使用的是最新的groovy版本,并在问题中提及相关细节。我不知道您的/usr/share/java目录中有多少JAR文件,但大多数可能被视为自动模块,因为它们没有迁移到显式模块(他们没有模块信息类)。我相信它会及时改进,但需要所有这些库的维护人员进行迁移。本文讨论了提供程序类groovy的解决方案,而不是在模块中。我已在类似的文章中对原因进行了解释。旁白:请确保您使用的是最新的groovy版本,并在问题中提及相关细节。我不知道有多少R文件位于您的/usr/share/java目录中,但大多数可能被视为自动模块,因为它们尚未迁移到显式模块(它们没有模块info.class)。我相信它会及时改进,但需要所有这些库的维护人员进行迁移。
$ 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