方法 getModule 返回命名模块中 class 的未命名模块
Method getModule returning unnamed module for class in named module
我刚开始看 Java 9 模块系统,我想知道 class 是否有可能知道它位于哪个模块中。
因此我创建了以下模块
module de.test {
exports de.test.myexport;
}
并编译了一个看起来像
的jar文件
> jar --print-module-descriptor --file=Java9Test-1.0-SNAPSHOT.jar
de.test
requires mandated java.base
exports de.test.myexport
在包 de.test
中,我有一个名为 Overview
的 class,我正在调用
Module module = Overview.class.getModule();
然而,返回的模块对象是未命名的,没有ModuleDescriptor
。
我在这里使用 getModule()
是否正确,或者是否有任何其他方法可以加载 class 的模块?
我在 OS X 上使用 JDK 9 build 120。
class 路径(带有 java --class-path ...
)上的所有 JAR 都被捆绑到同一个所谓的 unnamed module,无论它们是 "a real module" 还是 "just a JAR"。当您从这样的 JAR 中向 class 询问其模块时,您会得到您描述的结果。
尝试将 JAR 放在模块路径上(使用 java --module-path ...
)并且 Class::getModule
应该 return 您所期望的。
我刚开始看 Java 9 模块系统,我想知道 class 是否有可能知道它位于哪个模块中。
因此我创建了以下模块
module de.test {
exports de.test.myexport;
}
并编译了一个看起来像
的jar文件> jar --print-module-descriptor --file=Java9Test-1.0-SNAPSHOT.jar
de.test
requires mandated java.base
exports de.test.myexport
在包 de.test
中,我有一个名为 Overview
的 class,我正在调用
Module module = Overview.class.getModule();
然而,返回的模块对象是未命名的,没有ModuleDescriptor
。
我在这里使用 getModule()
是否正确,或者是否有任何其他方法可以加载 class 的模块?
我在 OS X 上使用 JDK 9 build 120。
class 路径(带有 java --class-path ...
)上的所有 JAR 都被捆绑到同一个所谓的 unnamed module,无论它们是 "a real module" 还是 "just a JAR"。当您从这样的 JAR 中向 class 询问其模块时,您会得到您描述的结果。
尝试将 JAR 放在模块路径上(使用 java --module-path ...
)并且 Class::getModule
应该 return 您所期望的。