2014-10-23 23 views
6

Ich versuche, ein vorhandenes Buildsystem zu aktualisieren, um Java 8 anstelle eines Java 5/6-Compilers zu verwenden, jedoch muss ich Ausgabekompatibilität generieren mit Java 5/6. Insgesamt ist das trivial (-target 1.6), aber ich habe Schwierigkeiten mit Code aus wsimport (mit der Version in JDK 8 bin).Erzwingen Java 8 wsimort-Befehlszeile zum Generieren von 1.6-kompatiblen Zielcode

Ich verwende Java HotSpot 64-Bit-Server-VM (Build 25.20-B23), JDK 1.8.0_20.

Der Befehl wsimport wird von einer Befehlszeile aus aufgerufen, um Code und die Ausgaben direkt von dort zu generieren. Aus alten Gründen kann ich diesen Prozess nicht ändern (z. B. ant), daher muss ich das Problem über die Befehlszeile lösen.

Was ich ausführen ist: "wsimport WSDL_FILE" (tatsächliche Datei spielt keine Rolle) dann "javap -verbose CLASS | Grep Major" auf einer der Klassen in der Ausgabe ausführen, um die Version zu überprüfen: es kommt immer heraus 52.

ich habe versucht, -J Argument wsimport Optionen an den javac-Compiler passieren, aber keiner der unten gearbeitet haben:

wsimport "-J-target 1.6" WSDL (fails with unrecognized option -target 1.6" coming from wsimport) 
wsimport "-J-Djavac.target=1.6" WSDL (no effect) 
wsimport "-J-Djavac.opt.target=1.6" WSDL (no effect) 

Vermutlich gibt es entweder eine gewisse Variation das Ziel durch, dass beim passieren funktioniert oder einige Eigenschafteneinstellungen, die funktionieren sollten; Wenn es eine ist, die ich benutze, habe ich nicht herausgefunden, wie ich es richtig weitergeben soll.

Antwort

3

Angenommen, dass wsimport Java 6 kompatiblen Quellcode erstellt, kein Grund sollte es nicht, aber wer weiß, dann ist die Lösung einfach -Xnocompile zu wsimport hinzuzufügen, und dann die Quelle direkt selbst zu bauen, mit was auch immer Mechanismus ist bequem dein Prozess.

+0

Schön! Ich glaube, dass das funktionieren wird, dass ich vernünftigerweise einen zweiten Befehl einbauen kann, wo der Build auftritt. Ich werde akzeptieren, sobald ich beweise, dass das funktioniert (bis dahin, wenn jemand weiß, wie man in wsimport repariert, würde gerne wissen). – user1676075