当前位置: 首页 > 知识库问答 >
问题:

JDK9中的预定义模块是什么,或者我需要哪个模块来修复依赖性问题?

苏宏逸
2023-03-14

JDK9(可能)将引入一个模块系统。作为其中的一部分,Java类库将模块化。

这可能导致在找不到类时出现异常,因为它们位于尚未指定为依赖项的模块中。

模块系统将创建哪些模块,它们各自的内容是什么?

或者换一种说法:给定一个未加载的类,如何找到合适的模块作为依赖项包含?

共有2个答案

宫俊远
2023-03-14

此处提供了完整的模块列表。http://cr.openjdk.java.net/~mr/jigsaw/ea/模块摘要。html

它列出了构成Java类库的73个模块。对于每一个,都有一个包含的包列表和它所依赖的其他模块列表。

给定一个未加载的类,可以在该站点上搜索包名的开头,以确定要依赖的模块。

凌展
2023-03-14

如何找到作为依赖项包含的适当模块?

考虑这个恶作剧类:

import java.sql.DriverManager;
import java.rmi.RemoteException;

public class UserDao {
    DriverManager driverManager = null;

    public void service() throws RemoteException {
        if (true) {
            throw new RemoteException();
        }
    }
}

让我们假设这个类被编译成user-dao.jar。jdeps工具就是答案(使用9ea170):

jdeps --list-deps user-dao.jar
   java.base
   java.rmi
   java.sql

(请注意,jdep随JDK 8提供,但在JDK 9中更合适。)

为了完整起见,如果您知道代码使用了一个特定的类(例如java.sql.DriverManager),并且您怀疑需要一个模块(例如java.sql),您可以通过文档确认该模块,或者在命令行上(同样是9ea170):

bash$ java --describe-module java.sql
java.sql@9-ea
exports java.sql
exports javax.sql
exports javax.transaction.xa
requires java.xml transitive
requires java.base mandated
requires java.logging transitive
uses java.sql.Driver
 类似资料:
  • 问题内容: JDK9将(可能)引入一个模块系统。作为其一部分,Java类库将被模块化。 当找不到类时,这会导致异常,因为它们位于尚未指定为依赖项的模块中。 用模块系统将创建哪些模块,它们各自的内容是什么? 或换句话说:给定一个未加载的类,如何找到合适的模块作为依赖项包含? 问题答案: 如何找到合适的模块作为依赖项? 考虑这个欺骗类: 假设将该类编译为。答案是jdeps工具(使用9ea170): (

  • 另一个类比了解Angular 2模块的是类。 在类中,我们可以定义公共或私有方法。 公共方法是我们代码的其他部分可以用来与之交互的API,而私有方法是隐藏的实现细节。 以相同的方式,模块可以导出或隐藏组件,指令,管道和服务。 导出的元素可被其他模块使用,而未导出(隐藏)的元素只是在模块本身内部使用,并且不能被我们的应用程序的其他模块直接访问。 模块的基本使用 为了能够定义模块,我们必须使用装饰器

  • 问题内容: 我有一个简单的节点应用程序,它对github上另一个应用程序具有单一依赖性。使用可以很好地安装依赖项,但是当我尝试在其中安装某些东西时,它说不可用。例如,github应用程序将Mongoose安装为依赖项。我认为该父应用程序可以访问该模块,因为它位于子模块中: 结构看起来像这样: 我是否只需要在父级应用程序中同时包含猫鼬作为依赖项,还是可以通过子级方式访问该模块? 问题答案: 我是否只

  • Velocity 不依赖 jQuery Velocity.js 可以在不引入 jQuery 的情况下单独使用。如果 你需要大部分动画效果能兼容 IE8,就必须引入 jQuery 1×。 它也可以和 Zepto 一起使用,写法和 jQuery 一样: // 无 jQuery 或 Zepto 时,Velocity()方法挂载在 window 对象上 (window.velocity) // ( 第一

  • Python 提供了强大的 模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率。 那么,模块到底指的是什么呢?模块,英文为 Modules,至于模块到底是什么,可以用一句话总结: 模块就是 Python  程序。换句话说,任何 Python 程序都可以作为模块,包

  • 我用 上面写着 我知道是,因为它抱怨包不存在。我应该在哪里添加依赖项,以便我的代码能够成功地编译和调谐?