【发布时间】:2021-04-25 22:57:55
【问题描述】:
我对 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。但它在类路径中,并且由显式模块访问,而不是自动模块。代码运行良好。不应该是抛出异常吗?
【问题讨论】:
标签: java java-platform-module-system