sun.rmi.server и sun.rmi.transport - внутренние API jdk, не поддерживаемые в Java 10 - PullRequest
0 голосов
/ 12 июня 2018

В настоящее время я использую Java 8 и хочу перейти на Java 11.

Перечисленные ниже классы 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 

Может кто-топожалуйста, помогите мне в поиске альтернатив для перечисленных выше классов?

Вывод JDEPS в JDK 11:

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))";
}

Спасибо.

1 Ответ

0 голосов
/ 22 июня 2018

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.

Есть несколько других внутренних API, которые перемещены в пакеты jdk.internal ... *в java 9, к которой можно получить доступ без какого-либо предупреждения , как показано ниже:

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

Примечание: Этот вопрос не относится киспользовать внутренний API прямо в коде вашего приложения.Поскольку есть программные продукты, разработанные с использованием внутренних API более 15 лет назад, они все еще существуют в Java 8.

...