You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 17中java.se模块未被加载的问题求助

为什么Java 17中代码无法获取到java.se模块?

java.se是一个聚合模块(aggregator module),它的作用仅仅是声明对所有Java SE规范定义模块的依赖,本身不包含任何可执行代码或资源文件。这种模块在JVM启动时默认不会被加载到启动模块层,核心原因如下:

  • JVM启动时会自动解析并加载程序运行必需的模块,聚合模块本身不是运行时的依赖项,所以默认不会被包含在ModuleLayer.boot().modules()返回的集合中。
  • 只有当你显式通过启动参数--add-modules java.se指定加载它,或者你的代码所在模块直接依赖java.se时,它才会被加入到启动模块层。

验证方式

  1. 执行java --list-modules命令查看默认加载的模块,输出里不会出现java.se;但执行java --add-modules java.se --list-modules,就能看到它出现在列表中。
  2. 修改你的程序启动参数,添加--add-modules java.se后再运行代码,java.se就会出现在输出结果里。

另外,你当前的过滤逻辑可以优化:Java SE规范的模块都是以java.开头的,用x.startsWith("java.")来筛选会更准确,不过这和java.se模块不出现的问题无关。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:30:00