温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

为何java Module模块报错

发布时间:2026-10-30 18:35:59 来源:亿速云 阅读:92 作者:小樊 栏目:编程语言

Java 的 Module(模块)报错通常和 Java 9 引入的 JPMS(Java Platform Module System) 有关。报错原因很多,下面按常见场景 + 解决办法给你系统梳理一下。


一、最常见报错类型与原因

1️⃣ module not found

Error: Module 'xxx' not found

原因:

  • module-info.java 中 requires xxx; 写错了
  • 模块名和 JAR 的 module name 不一致
  • 依赖 JAR 没有放到 module path

解决:

  • 确认依赖 JAR 是否带模块信息
jar --describe-module --file xxx.jar
  • 使用 module path 而不是 classpath
java --module-path lib -m com.example/app

2️⃣ package xxx is not visible

 package com.sun.xxx is not visible
 (package com.sun.xxx is declared in module java.base,
  which does not export it to module xxx)

原因:

  • 使用了 JDK 内部 API
  • Java 9+ 默认不允许访问未导出包

解决:

  • 避免直接使用 sun.* / com.sun.*
  • 或临时开放(不推荐长期使用):
--add-exports java.base/com.sun.xxx=ALL-UNNAMED

3️⃣ cannot access class because module does not export

Illegal reflective access

原因:

  • 反射访问了非导出类
  • 常见于老框架(Spring、Hibernate、Netty)

解决:

--add-opens java.base/java.lang=ALL-UNNAMED

4️⃣ classpath 和 module path 混用

Unnamed module reads package from named module

原因:

  • 一部分在 classpath(无名模块)
  • 一部分在 module path(命名模块)

解决:

  • 要么全用 module path
  • 要么全用 classpath(不写 module-info.java)

5️⃣ 没有 module-info.java 却被当模块跑

--module requires a module descriptor

原因:

  • 使用了 --module 但 JAR 不是模块

解决:

  • 加 module-info.java
  • 或去掉 --module,用 classpath 运行

二、module-info.java 常见错误

❌ requires 写错

module com.example {
    requires spring; // 错
}

✅ 正确模块名:

requires spring.core;

❌ 没导出包

module com.example {
}

外部无法访问你的类

✅ 导出:

exports com.example.service;

❌ 没开放反射

module com.example {
    exports com.example.entity;
}

框架反射失败

✅ 开放:

opens com.example.entity;

三、快速排查思路(推荐)

  1. 看完整报错第一行
  2. 判断是:
    • 模块找不到
    • 包不可见
    • 反射被拒
  3. 确认运行方式:
    • --module-path?
    • 还是 classpath?
  4. 用命令检查模块:
java --list-modules
jar --describe-module --file xxx.jar

四、如果你愿意,我可以更精准帮你

你可以直接贴:

  • 报错完整信息
  • module-info.java
  • Java 版本
  • 运行命令

我可以 逐行帮你定位并给出改法 ✅

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手