gpt4 book ai didi

java - 方法 getModule 为命名模块中的类返回未命名模块

转载 作者:IT老高 更新时间:2023-10-28 20:53:53 27 4
gpt4 key购买 nike

我刚开始研究 Java 9 模块系统,我想知道一个类是否有可能知道它位于哪个模块中。

为此我创建了以下模块

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 的类,我正在调用该类

Module module = Overview.class.getModule();

但是,返回的模块对象是未命名的并且没有ModuleDescriptor

我在这里使用 getModule() 是否正确,或者有没有其他方法可以加载类的模块?

我在 OS X 上使用 JDK 9 build 120。

最佳答案

类路径上的所有 JAR(使用 java --class-path ...)被捆绑到同一个所谓的 unnamed module 中,无论它们是“真正的模块”还是“只是一个 JAR”。当你从这样的 JAR 中向一个类询问它的模块时,你会得到你描述的结果。

尝试将 JAR 放在模块路径上(使用 java --module-path ...),Class::getModule 应该会返回您期望的结果。

关于java - 方法 getModule 为命名模块中的类返回未命名模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548629/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com