Подтвердить что ты не робот

Установка последнего JAX-WS на JDK 6

Я выполнил инструкции здесь для правильной установки последней версии JAX-WS (2.2.6) поверх моего JDK v1.6.0_31 (т.е. копирование jaxws-api.jar и jaxb-api.jar из выпуска JAX-WS в мой каталог ${JAVA_HOME}/lib/endorsed). Изнутри Eclipse я могу запустить задачу wsimport ant правильно, и сгенерированный код дает печать версии в комментариях:

/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.2.6b21 
* Generated source version: 2.2
* 
*/

Проблема заключается в том, что сгенерированный код клиента показывает ошибки, которые заставляют меня думать, что компилятор все еще использует JAX-WS версии 2.1:

The constructor Service(URL, QName, WebServiceFeature[]) is undefined

и

The attribute required is undefined for the annotation type XmlElementRef

Я попытался явно установить аргумент -Djava.endorsed.dir при запуске Eclipse, и я также попытался установить этот аргумент в Eclipse- > Preferences- > Java- > InstalledJREs, но ни один из них не помог. Мой wsimport ant путь к классу задач определен для просмотра JAX-WS 2.2.6. Я также попытался установить мой путь построения проекта, чтобы потянуть в 2.2.6 банок. Ничто не работает. Я что-то пропустил?

4b9b3361

Ответ 1

Не уверен, почему он не подбирал его перед тем, как он поддержал lib (кроме, может быть, одобренный каталог, который вы положили в свои библиотеки, для другого JRE/JDK, который использует затмение?), но в отношении последней вещи, которую вы пробовали... добавление банок непосредственно в путь сборки... это будет работать, если вы закажете записи пути построения, чтобы баны JAX-WS находились над записью JDK.

Ответ 2

Вы создали код, требующий JAX-WS 2.1. Версия 2.0 не имеет класса WebServiceFeature и в результате также не является конструктором в службе с таким типом аргумента.

Как вы видите, в Java SE 6 такого конструктора нет: javax.xml.ws.Service SE 6, но, например, в Java EE 6 есть: javax.xml.ws.Service EE 6

enter image description here

Ответ 3

Если возможно, одно решение могло бы заменить jdk1.6 на более высокий jdk (либо 1.7, либо 1.8).

Ответ 4

Вы можете использовать следующую команду для создания заглушек wsdl2java -p -client -frontend jaxws21