大佬教程收集整理的这篇文章主要介绍了Java 模块真的无法访问类路径吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对 Java 9 模块应该具有的假设行为有些困惑。在 O'Reilly 的 Java 9 Modularity 中,我阅读了以下声明:
模块不能读取类路径,所以我们的模块不能访问类型 类路径,如图 8-1 所示。
...
未命名模块导出类路径上的所有代码并读取所有 其他模块。但是有一个很大的限制:未命名的模块 本身只能从自动模块中读取!
但是,在尝试解决 Eclipse 上的问题(maven 依赖项位于类路径而不是模块路径中)时,我注意到我的应用程序的启动器设置与我所阅读的内容冲突。这是它执行的命令行:
/opt/jdk-16+36/bin/java -Dfile.enCoding=UTF-8
-p /home/lgmonezi/workspace/my.test/target/classes
-classpath /home/lgmonezi/.m2/repository/org/HSQLdb/HSQLdb/2.6.0/HSQLdb-2.6.0.jar
-XX:+ShowCodeDetailsInExceptionmessages
-m my.test/net.lgmonezi.test.main.fileNode
虽然存在 module-info.java,但应用程序唯一的外部依赖是 HSQLdb-2.6.0 jar。但它在类路径中,并由显式模块访问,而不是自动模块。代码运行良好。不应该是抛出异常吗?
我们的模块无法访问类路径上的类型
您的代码没有(直接)使用任何 HSQLDB 类,因此没有访问检查在起作用。
类路径上的 JDBC driver 使其通过 java.sql.Driver
加载机制自动向 JDBC 框架注册 service-provider 接口的实现。 (参见 JDBC 4 specification,第 9.2.1 节)
除了自动注册过程之外,没有代码(您的或框架)直接“访问”任何 HSQLDB 代码。都是通过接口完成的。
以上是大佬教程为你收集整理的Java 模块真的无法访问类路径吗?全部内容,希望文章能够帮你解决Java 模块真的无法访问类路径吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。