如何强制Java 8 wsimport命令行生成1.6目标兼容代码

时间:2014-10-23 16:56:15

标签: java javac wsimport

我正在尝试升级现有的构建系统以使用Java 8而不是Java 5/6编译器,但是,我仍然必须生成与Java 5/6兼容的输出。总的来说这是微不足道的(-target 1.6),但是我在使用wsimport生成的代码时遇到了困难(使用JDK 8 bin中的版本)。

我正在使用Java HotSpot 64位服务器VM(版本25.20-b23),JDK 1.8.0_20。

从命令行调用wsimport命令以生成代码,并直接从那里打包输出。由于遗留原因,我无法更改此过程(例如使用ant),因此我需要从命令行解决问题。

我运行的是:“wsimport WSDL_FILE”(实际文件没关系) 然后在输出中的任何类上运行“javap -verbose CLASS | grep major”来检查版本:它总是出来52。

我尝试使用-J参数来wsimport将选项传递给javac编译器,但是以下都没有工作:

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)

据推测,通过该作品传递目标或者应该有效的某些属性设置会有一些变化;如果它是我正在使用的那个,那么我还没弄明白如何正确传递它。

1 个答案:

答案 0 :(得分:3)

假设wsimport创建了Java 6兼容的源代码,没有理由不应该,但谁知道,那么解决方案就是简单地将-Xnocompile添加到wsimport,然后使用任何机制直接自己构建源代码对你的过程很满意。