Как использовать расширения JAXB в командной строке xjc

Я работаю над связанной проблемой здесь, но у меня есть отдельный вопрос. Возможно, это все часть одной и той же проблемы, но она кажется другой.

Из-за проблем, возникающих при запуске XJC через задачу Ant и через фасад, я сейчас пытаюсь запустить его с помощью инструмента командной строки "xjc" из JDK.

Как и в исходной задаче, я пытаюсь использовать расширения "Element Wrapper" и "Fluent API", поэтому моя командная строка выглядит следующим образом:

xjc -extension  -classpath "lib/jaxb-fluent-api-2.1.8.jar;lib/jaxb-xew-plugin-1.4.jar" -Xxew -summary target/xew-summary.txt -instantiate lazy -Xfluent-api schema/serviceCallResults.xsd

Это в основном те же параметры, которые я отправлял в плагин Maven "cxf-jaxb-plugin", который работал долгое время. К сожалению, эта командная строка "xjc" не работает с:

нераспознанный параметр -Xxew

Что здесь может быть не так?

1 ответ

Решение

Это просто не работает, извините.

Плагины XJC должны расширять com.sun.tools.xjc.Plugin учебный класс. Но XJC, который входит в JDK и доступен как xjc двоичный (напр. xjc.exe под винду) перепаковывается: com.sun.tools.xjc -> com.sun.tools.internal.xjc,

Так что в ванильной командной строке xjc у вас нет com.sun.tools.xjc.Plugin класс (который расширяет плагины XJC), но com.sun.tools.internal.xjc.Plugin,

Итак, CLI xjc просто не работает с плагинами XJC. Единственные плагины, которые все еще работают, это те, которые также перепакованы. (Ex. com.sun.tools.internal.xjc.addon.code_injector.PluginImpl.)

Если вы хотите командной строки, то попробуйте выяснить, java -cp ... параметры, это единственный способ заставить его работать со сторонними плагинами XJC, такими как XEW или JAXB2-Basics.

Другие вопросы по тегам