通过简单地将常规jar放置在automatic module而非java-9上,可以将常规jar转换为modulepath
。自动模块具有以下属性:
自动模块是隐式定义的命名模块,因为它没有模块声明。每个包装中的因此,即使自动模块也被视为已导出实际上可能只供内部使用。
因此,自动模块内的所有软件包均可用。但是,如果我们使用classpath
指令检查自动模块,则输出中没有--describe-module
部分。
例如自动模块exports
main
如果将包jar --file main.jar --describe-module
com.foo jar:file:///.../code/module/main.jar/!module-info.class
requires java.base mandated
contains com.foo
仍视为已导出,为什么没有exports
节?我发现这有点令人困惑:com.foo
提示存在无导出包,但是同时,--describe-module
是一个自动模块,因此所有内容都导出到隐式。
[我相信,main
工具中的命令行选项--describe-module
只是用来描述jar文件的内容,如果它是一个显式模块,则完整的描述符将与自动模块共享,仅显示名称。] >
从命令jar
引用
打印模块描述符,或
自动模块名称另一方面,如果您为给出了jar文件的自动模块进行
jar --help
,则可以注意到,此类声明的导出实际上存在于模块声明中。例如说:
try usingjdeps
for generatingmodule-info.java
[将以下内容写入
jdeps
module-info.java