Java 11下Payara 5.29.0编译找不到javax.rmi.PortableRemoteObject如何解决
解决方案
类归属说明
javax.rmi.PortableRemoteObject原本是JDK 8及更早版本内置java.corba模块中的类,Java 11正式移除了所有CORBA相关的内置模块,因此升级到Java 11后会触发找不到类的编译错误。该类不属于EJB API包,你之前引入的jakarta.ejb-api不包含这个类,无法解决报错。依赖添加方案
仅通过新增Maven依赖即可解决该问题,无需修改现有业务代码,你可以在pom.xml中添加如下依赖:
<dependency> <groupId>org.glassfish.corba</groupId> <artifactId>glassfish-corba-omgapi</artifactId> <version>4.2.4</version> <scope>provided</scope> </dependency>
注意:将scope设置为provided即可,因为Payara 5.29.0服务器本身已经内置了该类的实现,不需要将依赖打入最终应用包,避免出现类冲突问题。
- 可选适配方案
如果你后续计划将代码适配到EJB 3版本,可以直接使用@EJB注解注入远程Bean,无需再调用PortableRemoteObject.narrow方法做类型转换,也可以从根源上消除该依赖需求。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

