我使用的是 Payara 5.29.0 企业服务器,支持 Jakarta EE 8。
我正在尝试移植 Java 11 的代码。
当我编译时出现错误:
cannot find symbol
[ERROR] symbol: variable PortableRemoteObject
代码包含在EJB3之前使用的
javax.rmi.PortableRemoteObject.narrow
。
javax.rmi.PortableRemoteObject 是否在某个库中,以便我可以将其添加到 maven pom.xml 中?
我尝试过依赖
<dependency>
<groupId>jakarta.ejb</groupId>
<artifactId>jakarta.ejb-api</artifactId>
<version>3.2.6</version>
</dependency>
但我仍然遇到同样的错误。
我可以将代码移植到 EJB3,但我想知道是否可以仅添加 Maven 依赖项来处理这个问题?
javax.rmi.PortableRemoteObject 直到 JDK10 都是 JDK 本身的一部分。它在 JDK11 中被删除。如果我正确理解https://openjdk.org/jeps/320,所有 rmi 都在 11 中被删除。
RMI 仍然存在于 JDK 11 及更高版本中,但 PortableRemoteObject 已被删除。使用 glassfish 包:
https://dev.to/dbh/java-11-making-rmi-calls-and-ejbs-work-again-1l5b
<dependency>
<groupId>org.glassfish.corba</groupId>
<artifactId>glassfish-corba-orb</artifactId>
<version>4.2.0</version>
</dependency>