Dubbo报错:module java.base does not “opens java.lang“ to unnamed module

在项目中使用nacos + dubbo时,启动报错,这个错误是因为依赖的dubbo包不对的原因,不需要像网上说的那个添加jvm参数:

bash 复制代码
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @1941a8ff
    at java.base/jdk.internal.reflect.Reflection.throwInaccessibleObjectException(Reflection.java:427)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:201)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:192)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:186)
    at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:102)
    at javassist.util.proxy.FactoryHelper.toClass2(FactoryHelper.java:180)
    at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:163)
    at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:501)
    at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:486)
    at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:422)
    at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:394)

异常是由Java 9及以上版本中引入的Java Platform Module System引起的,特别是强封装的实现。

它仅在特定条件下允许access,最突出的条件是:

类型必须是公共的

必须导出拥有的软件包

对于反射,导致异常的代码尝试使用相同的限制。

更确切地说,异常是由对 setAccessible 的调用引起的。

上面说的原因是对的,dubbo依赖包已解决了上面的问题,在使用dubbo时,不要添加下面的依赖:

xml 复制代码
       <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-nacos-spring-boot-starter</artifactId>
            <version>3.3.4</version>
        </dependency>

正确的依赖包只需要这几个即可:

xml 复制代码
        <!--dubbo-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>3.3.4</version>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-actuator</artifactId>
            <version>3.3.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>3.3.4</version>
        </dependency>

这样就不会报上面的错误了。

相关推荐
法哥2012几秒前
用 C++ 控制 CMW100,到底在干什么?
开发语言·c++
sun༒5 分钟前
Spring @Scheduled 定时任务详解:Cron表达式、执行顺序、优先级与并行调度
java·后端·spring
QH139292318809 分钟前
NVIDIA H200 H300服务器
运维·服务器·开发语言·网络·信息与通信
一次旅行15 分钟前
DeepSeek‑V4‑Flash‑Vision‑Exp 小白入门实战|3种传图方式、完整可跑代码、避坑排障
java·前端·人工智能
OPEN-F29 分钟前
Python进阶教程:单元测试与代码质量
开发语言·python·单元测试
阿里嘎多学长30 分钟前
2026-08-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
野生技术架构师32 分钟前
Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器
java·spring boot·后端
其实防守也摸鱼38 分钟前
Codex破局:前端组件秒级生成的技术文章大纲
开发语言·前端·人工智能·学习·安全·web安全
AI人工智能+电脑小能手40 分钟前
大白话说Java设计模式-28-模板方法模式(业务实战篇)
java·设计模式·模板方法模式·spring源码·订单系统·代码复用
奥莱维42 分钟前
KNX酒店方案_KNX专用线与高端酒店技术逻辑
java·服务器·前端·数据库