如何在xjc命令行上使用JAXB扩展

Dav*_*arr 7 java jaxb jaxb-xew-plugin

我在这里正在处理相关问题,但我有一个单独的问题.也许这是同一个问题的一部分,但似乎有所不同.

由于我通过Ant任务和外观运行XJC的问题,我现在正尝试使用JDK中的命令行"xjc"工具运行它.

与原始问题一样,我正在尝试使用"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
Run Code Online (Sandbox Code Playgroud)

这些基本上与我发送给"cxf-jaxb-plugin"Maven插件的参数相同,该插件已经工作了很长时间.不幸的是,这个"xjc"命令行失败了:

无法识别的参数-Xxew

这可能有什么问题?

lex*_*ore 8

抱歉,这只是行不通.

XJC插件必须扩展com.sun.tools.xjc.Plugin类.但是包含在JDK中并以xjc二进制形式提供的XJC (例如xjc.exe在Windows下)被重新打包:com.sun.tools.xjc- > com.sun.tools.internal.xjc.

所以在vanilla命令行中xjc你没有com.sun.tools.xjc.Plugin类(XJC插件扩展)但是com.sun.tools.internal.xjc.Plugin.

因此CLI xjc不适用于XJC插件.唯一仍然有效的插件是那些重新打包的插件.(例如com.sun.tools.internal.xjc.addon.code_injector.PluginImpl)

如果你想要命令行然后尝试找出java -cp ...参数,这是使它适用于第三方XJC插件如XEW或JAXB2-Basics的唯一方法.