You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

JPMS是否支持模块版本?版本标识及依赖配置疑问咨询

关于JPMS模块版本的疑问解答

嘿,这个问题问到点子上了!我来一步步帮你理清:

1. java --list-modules输出里的@9是什么?

没错,@后面的数字就是模块的版本号!你看到的这些都是JDK自带的系统模块,它们的版本和你使用的JDK版本完全一致——这里的9就代表你用的是JDK 9版本。JPMS从JDK 9开始引入,系统模块的版本自然和JDK版本绑定。

2. JPMS到底支持模块版本吗?

当然支持!不过有个容易混淆的点:JPMS允许模块携带版本元数据,但JVM在运行时并不会自动处理版本冲突或依赖版本匹配。版本信息更多是作为元数据存在,实际的版本管理、依赖解析工作,通常是交给Maven、Gradle这类构建工具来完成的。

3. 能不能在模块A的module-info里指定依赖特定版本的模块B?

完全可以!你可以在requires语句后面加上version子句来声明依赖的版本,语法示例如下:

module moduleA {
    // 不指定版本的依赖
    requires moduleB;
    // 指定特定版本的依赖
    requires moduleC version "1.2.3";
}

不过要注意:这个版本声明只是模块描述符里的元数据,JVM运行时并不会据此去寻找对应版本的模块。真正会用到这个版本信息的是构建工具——它们会根据你声明的版本,从仓库里拉取正确的依赖包,然后构建出符合要求的模块路径。

内容的提问来源于stack exchange,提问作者user5182503

火山引擎 最新活动