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

Java中如何查找模块名与包名以配置--add-opens参数

你遇到的这个警告对应的正确--add-opens参数如下:

--add-opens java.base/sun.reflect.annotation=ALL-UNNAMED

原因是sun.reflect.annotation包属于JDK核心的java.base模块,你猜测的参数里缺失的模块名就是java.base。

通用查询模块名、包名的方法

  • 拆分包名:任意类的全限定名格式为包名.类名,你给出的字段所属类全限定名是sun.reflect.annotation.AnnotationInvocationHandler,去掉末尾的类名AnnotationInvocationHandler,剩余的sun.reflect.annotation就是需要的包名。
  • 查询包所属模块:可以用JDK自带的命令查询指定包归属的模块,执行命令:
    java --describe-module java.base | grep "sun.reflect.annotation"
    
    (Windows环境把grep替换为findstr即可)
    如果输出包含该包的导出/开放记录,就说明该包属于你查询的模块。如果不确定归属模块,可先执行java --list-modules查看当前JDK的所有内置模块,逐个排查即可。
  • 特殊情况说明:如果你的反射调用代码是写在自定义命名模块里的,把参数末尾的ALL-UNNAMED替换为你自己的模块名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:36:02