Как использовать javac для замены устаревшего wsgen или apt в JDK 7 или 6? - PullRequest
5 голосов
/ 05 февраля 2012

Когда я использую wsgen или apt для генерации артефактов веб-сервиса в JDK 7 с помощью команды.

wsgen -s src -cp CLASS_PATH -d OUTPUT_DIRECTORY  com.sun.WebServiceSEI

отображает следующее предупреждение

Средство apt и связанный с ним API, содержащиеся в пакете com.sun.mirror, устарели начиная с JDK 7 и планируется удалить в следующем основном выпуске JDK. Используйте параметры, доступные в инструменте javac, и API, содержащиеся в пакетах javax.annotation.processing и javax.lang.model для обработки аннотаций.

Как создать артефакты веб-службы, не используя wsgen или apt для удаления этого предупреждения?

Ответы [ 3 ]

2 голосов
/ 24 марта 2013

Javac является заменой. Они добавили подключаемую систему обработки аннотаций в javac (JSR 269: API-интерфейс Pluggable Annotation Processing) некоторое время назад (я думаю, Java 6). Процессор аннотаций, который вы ищете, находится в jaxws-tools.jar (Metro download). Когда у вас есть этот jar на вашем пути к классам, вы сможете запускать javac с параметром -processor com.sun.tools.ws.processor.modeler.annotation.WebServiceAp Существует также задача Ant, com.sun.tools.ws.ant.AnnotationProcessingTask. Они немного об этом говорят здесь http://jax -ws.java.net / nonav / 2.2.6 / docs / ch04.html # tools-annotation-processing , но на самом деле не объясняют этого. Возможно, требуемый процессор аннотаций поставляется с JDK, но если это так, я не смог его найти.

1 голос
/ 06 февраля 2012

Предупреждение генерируется, потому что класс WsgenTool использует классы из пакета com.sun.mirror.apt, которые в JDK7 устарели. Я думаю, что через некоторое время команда JAX-WS выпустит jaxws-ri, который не использует этот API, но это может произойти где-то ближе к выпуску JDK8.

0 голосов
/ 11 февраля 2012

Боюсь, это невозможно.Что вы можете сделать, так это вернуться к старому JDK, который работал на вас, и это ваш лучший выбор.

...