【发布时间】:2018-04-03 11:39:35
【问题描述】:
我根据需要使用插件的 v3.7.0 和 JDK 9.0.1。我添加了两个requires 语句,每个都引用类路径(自动模块)中的一个jar。将 jar 移到 Modulepath 后,module-info.java 在 Eclipse 中编译成功。但是,Maven 给了我一个编译器错误,说其中一个丢失(奇怪的是,不是第一个,它只是之前的一行)。我试图检查自动模块名称,但我从这个 jar 的命令中得到一个错误。这个错误是什么意思,我该如何解决它,以便找到正确的模块名称?
我在下面的输出中替换了我的用户名。有问题的 jar 确实使用了 ServiceLoader,但未使用 Java 9 编译。
computerName:Commander-java username$ jar --file=/Users/username/.m2/repository/com/username/rcf/1.0/rcf-1.0.jar --describe-module
Unable to derive module descriptor for: /Users/username/.m2/repository/com/username/rcf/1.0/rcf-1.0.jar
Provider class com.username.rcf.server.TestCmdChain not in module
computerName:Commander-java username$ java -p /Users/username/.m2/repository/com/username/rcf/1.0/rcf-1.0.jar --list-modules
Error occurred during initialization of boot layer
java.lang.module.FindException: Unable to derive module descriptor for /Users/username/.m2/repository/com/username/rcf/1.0/rcf-1.0.jar
Caused by: java.lang.module.InvalidModuleDescriptorException: Provider class com.username.rcf.server.TestCmdChain not in module
How to deal with java keywords in auto generated module names in Java 9? 中的答案与在模块名称中使用 Java 标识符有关。我的模块的自动 jar 名称应该只是 rcf,因为 jar 名称是 rcf-1.0.jar。我得到的错误也不同。
【问题讨论】:
-
How to deal with java keywords in auto generated module names in Java 9? 的可能副本...您是否拥有工件
rcf-1.0.jar? -
是的,我拥有它。我的名称中没有任何 Java 标识符。这只是rcf。该错误似乎与ServiceLoader有关,因为错误中提到的类实现了与ServiceLoader一起使用的接口,但不确定。无法理解。
-
撤回重复投票。雅似乎是实现包doesn't reside in the module 本身。
标签: java maven java-9 java-module module-info