sun.rmi.server和sun.rmi.transport-Java 10不支持jdk内部API

sun.rmi.server和sun.rmi.transport-Java 10不支持jdk内部API,java,rmi,java-10,java-11,Java,Rmi,Java 10,Java 11,我目前正在使用Java8,希望迁移到Java11 下面列出的类中的jdeps-p-jdkinternals…命令是Java 10不支持的 sun.rmi.server.UnicastRef sun.rmi.server.UnicastRef2 sun.rmi.transport.Endpoint sun.rmi.transport.LiveRef sun.rmi.transport.tcp.TCPEndpoint 有人能帮我找到上面列出的课程的替代方案吗 JDK 11中JDEP的输出:

我目前正在使用Java8,希望迁移到Java11

下面列出的类中的
jdeps-p-jdkinternals…
命令是Java 10不支持的

sun.rmi.server.UnicastRef
sun.rmi.server.UnicastRef2 
sun.rmi.transport.Endpoint 
sun.rmi.transport.LiveRef 
sun.rmi.transport.tcp.TCPEndpoint 
有人能帮我找到上面列出的课程的替代方案吗

JDK 11中JDEP的输出:

digraph "AppCore.jar" {
// Path: D:\jdeps\srclib\AppCore.jar
   "com.util.RMIServer"                                -> "sun.rmi.server.UnicastRef (JDK internal API (java.rmi))";
   "com.util.RMIServer"                                -> "sun.rmi.server.UnicastRef2 (JDK internal API (java.rmi))";
   "com.util.RMIServer"                                -> "sun.rmi.transport.Endpoint (JDK internal API (java.rmi))";
   "com.util.RMIServer"                                -> "sun.rmi.transport.LiveRef (JDK internal API (java.rmi))";
   "com.util.RMIServer"                                -> "sun.rmi.transport.tcp.TCPEndpoint (JDK internal API (java.rmi))";
   "com.util.WrappedPostlessSocket"                    -> "sun.rmi.transport.proxy.RMISocketInfo (JDK internal API (JDK removed internal API))";
}

谢谢。

JDK 11允许我们通过在项目中导出带有警告的模块来使用很少的内部API,如下所示:

warning: UnicastRef is internal proprietary API and may be removed in a future release.
警告清楚地说明了将要发生的事情

命令:

javac --add-exports java.rmi/sun.rmi.server=ALL-UNNAMED RMIServer.java  

Where, java.rmi -> is a module name,
       sun.rmi.server -> is the package name,
       RMIServer.java -> Class in which package sun.rmi.server is imported.
java 9中很少有其他内部API迁移到jdk.internal…*包,可以在没有任何警告的情况下访问这些包,如下所示:

javac --add -exports jdk.management.agent/jdk.internal.agent=ALL-UNNAMED HelloWorld.java  

注意:这个问题与是否在应用程序代码中直接使用内部API无关。因为15年前有一些软件产品是使用内部API开发的,它们仍然存在于java 8中。

如果您的应用程序直接使用这些类,那么它就有问题,您需要修复它。Java本身可以使用这些类。@Tschallacka是的,我查看了包名,它是
Java.rmi.registry
,在该页上特别提到它是从Java 1.1开始就存在的,而这不是OP提到的包之一,您提到的包
java.rmi.server
也从Java1.1开始就存在了,您发明的包
java.rmi.transport
java.rmi.transport.tcp
在任何java版本中都不存在。你的观点是什么?直接使用
sun.*
类总是错误的,二十多年来一直有一个关于这个问题的特别警告。发布相关代码,我们将告诉您如何修复它。请参阅、和以及其他许多代码。您必须修复它。看起来它只限于几个班级。