我目前使用的是Java 8,并希望迁移到Java 11。
下面列出的jdeps -P -jdkinternals ...
命令是Java10不支持的类。
sun.rmi.server.UnicastRef
sun.rmi.server.UnicastRef2
sun.rmi.transport.Endpoint
sun.rmi.transport.LiveRef
sun.rmi.transport.tcp.TCPEndpoint
有没有人可以帮我在上面列出的类中搜索替代类?
JDK11中JDEPS的输出:
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))";
}
谢谢。
发布于 2018-06-22 22:57:55
JDK11允许我们使用少量的内部,通过导出带有警告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.interner...*包中,它们可以在没有任何警告的情况下进行访问,如下所示:
javac --add -exports jdk.management.agent/jdk.internal.agent=ALL-UNNAMED HelloWorld.java
注意:此问题与是否在应用程序代码中直接使用内部接口无关。由于早在几年前就有使用15+内部API开发的软件产品,它们仍然存在于Java8中。
https://stackoverflow.com/questions/50815877
复制相似问题