2015-01-26 6 views
6

Ich arbeite gerade an einem ähnlichen Problem here, aber ich habe eine andere Frage zu verwenden. Vielleicht ist es alles ein Teil des gleichen Problems, aber es scheint anders zu sein.Wie JAXB Erweiterungen auf xjc Kommandozeile

Aufgrund der Probleme, die ich XJC durch die Ant-Aufgabe und durch die Fassade ausgeführt habe, versuche ich jetzt, es mit der Befehlszeile "xjc" Tool aus dem JDK auszuführen.

Wie in dem ursprünglichen Problem, ich versuche, die "Element Wrapper" und "Fluent API" Erweiterungen zu verwenden, so dass meine Befehlszeile ist die folgende:

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 

Dies sind im Grunde die gleichen Parameter I habe an das Maven Plugin "cxf-jaxb-plugin" gesandt, das schon lange funktioniert. Leider versagt diese "xjc" Kommandozeile mit:

unerkannt Parameter -Xxew

Was hier falsch sein könnte?

Antwort

6

Das funktioniert einfach nicht, sorry.

XJC Plugins müssen die com.sun.tools.xjc.Plugin Klasse erweitern. Aber der XJC, der in JDK enthalten ist und als xjc binär (ex. xjc.exe unter Windows) verfügbar ist, wird neu gepackt: ->com.sun.tools.internal.xjc.

Also in Vanille-Befehlszeile xjc haben Sie nicht die com.sun.tools.xjc.Plugin Klasse (welche XJC-Plugins erweitern) aber com.sun.tools.internal.xjc.Plugin.

So CLI xjc funktioniert einfach nicht mit XJC Plugins. Die einzigen Plugins, die noch funktionieren, sind solche, die ebenfalls neu verpackt werden. (Bsp. com.sun.tools.internal.xjc.addon.code_injector.PluginImpl.)

Wenn wollen Sie Befehlszeile versuchen dann java -cp ... Parameter, um herauszufinden, das ist der einzige Weg, um es mit Dritt XJC Plugins wie XEW oder JAXB2-Basics arbeiten zu machen.

+0

Wie man nicht '-jar' und' -cp' Optionen kombinieren, die Kommandozeile etwas sein wird, wie die 'java -cp jaxb-api-2.2.7.jar; jaxb-Core-2.2.7.jar; jaxb-xjc-2.2.7.jar com.sun.tools.xjc.XJCFacade -d src xsd' –

+0

@ dma_k Sie haben Recht. Ich habe es für ein "schattiertes" Glas in einem anderen Projekt verwechselt. – lexicore