Pav*_*l_K 7 java java-9 java-module module-info
我认为JPMS不支持模块版本.但是,当我这样做时,java --list-modules我有以下输出:
java.activation@9
java.base@9
java.compiler@9
java.corba@9
java.datatransfer@9
java.desktop@9
java.instrument@9
....
Run Code Online (Sandbox Code Playgroud)
所以,我无法理解这@9是什么.这个版本还是什么?如果JPMS支持模块版本,我可以在模块A的module-info中设置,模块A是否需要某个版本的模块B?
为了更清楚地了解现有@9信息:
JVMS 9module_version_index在Module_attribute结构中包含一个字段,即类文件格式支持存储模块的版本字符串,即使requires_version_index已经定义了一个,但我不知道任何与评估此版本相关的规范,呈现此数据纯粹是提供信息这一点。
有关模块版本的当前状态(从 Java 9 GA 开始)的更多信息可以在问题摘要中找到。版本的格式在ModuleDescriptor.Version API 中定义。
我不明白这是@ 9是什么。是这个版本还是什么?
是的,它是模块的版本。
如果JPMS支持模块版本,是否可以在模块A的module-info中设置,该模块A需要特定版本的模块B?
不可以,您不能在另一个模块的声明中引用模块的特定版本。我相信在模块系统的状态#Module声明中总是清楚地提到了这一点
一个模块的声明不包括版本字符串,也不限制在其所依赖的模块的版本字符串。这是有意的,因为解决版本选择问题不是模块系统的目标,最好是构建工具和容器应用程序。