8

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

由于我通过 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

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

无法识别的参数 -Xxew

这里可能有什么问题?

4

1 回答 1

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.

所以 CLIxjc不能与 XJC 插件一起使用。唯一仍然有效的插件是那些重新打包的插件。(例如com.sun.tools.internal.xjc.addon.code_injector.PluginImpl。)

如果您想要命令行然后尝试找出java -cp ...参数,这是使其与第三方 XJC 插件(如 XEW 或 JAXB2-Basics)一起工作的唯一方法。

于 2015-01-26T07:40:54.077 回答