JEP 320: удалить модули Java EE и CORBA

я взял пример SOAP наПример рабочего мыльного клиента , поместите это в файлSOAPClientSAAJ.javaи попытался скомпилировать его (Openjdk 9 на Debian):

[email protected] ~/javatest> javac SOAPClientSAAJ.java 
SOAPClientSAAJ.java:1: error: package javax.xml.soap is not visible
import javax.xml.soap.*;
                ^
  (package javax.xml.soap is declared in module java.xml.ws, which is not in the module graph)
1 error

Попробовав Google, я обнаружил, что компиляция и запуск

[email protected] ~/javatest> javac --add-modules java.xml.ws SOAPClientSAAJ.java
[email protected] ~/javatest> java --add-modules java.xml.ws SOAPClientSAAJ

работает. Смотрите также это видео для общего фона:https://www.youtube.com/watch?v=y8bpKYDrF5I&t=20m17s

Теперь вопросы:

Разве компилятор не должен автоматически добавлять модуль java.xml.ws? (поскольку он, очевидно, знает, что это необходимо) Это ошибка в javax.xml.soap?Почему опция --add-modules не задокументирована на моих страницах руководства? (openjdk 9 в Debian)Что я должен написать в файле .java, чтобы автоматически добавить модуль java.xml.ws?

Ответы на вопрос(1)

Решение Вопроса

новые модули Java 9,javax.xml.soap пакетна самом деле пакет Java EEи так теперь не видно. Текущий обходной путь должен использовать--add-modules, как вы сделали, или чтобымодулировать ваш код.

Модульность вашего кода требует реструктуризации его в модули, включаяmodule-info.java файл, который определяет используемые вами модули. В вашем случае указавjava.se.ee даст доступ ко всем модулям EE.

 Basil Bourque29 июл. 2018 г., 04:20
Помните, что--add-modules Обходной путь - только для Java 9 и Java 10, Java 11 и позже удаляетJava EE связанные модули полностью изJava SEпоскольку ответственность перекладывается наДжакарта Э. организация. Подробнее см.JEP 320: удалить модули Java EE и CORBA

Ваш ответ на вопрос