我正在尝试将现有的构建系统升级为使用Java 8而不是Java 5/6编译器,但是我仍然需要生成与Java 5/6兼容的输出。总的来说这很简单(-target 1.6),但是我在使用wsimport生成的代码中遇到了困难(使用JDK 8 bin中的版本)。
我正在使用Java HotSpot 64位服务器VM(build 25.20-b23),JDK 1.8.0_20。
从命令行调用wsimport命令以生成代码,并直接从那里打包输出。由于遗留原因,我无法更改此过程(例如使用ant),因此我需要从命令行解决问题。
我运行的是:“wsimport WSDL_FILE”(实际文件无关紧要) 然后在任何一个输出类上运行“javap -verbose CLASS | grep major”以检查版本:它总是输出52。
我尝试使用-J参数将选项传递给javac编译器,但以下任何一种都没有起作用:
我正在使用Java HotSpot 64位服务器VM(build 25.20-b23),JDK 1.8.0_20。
从命令行调用wsimport命令以生成代码,并直接从那里打包输出。由于遗留原因,我无法更改此过程(例如使用ant),因此我需要从命令行解决问题。
我运行的是:“wsimport WSDL_FILE”(实际文件无关紧要) 然后在任何一个输出类上运行“javap -verbose CLASS | grep major”以检查版本:它总是输出52。
我尝试使用-J参数将选项传递给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)
我猜想可能有一些关于通过目标的变化可以起作用,或者一些应该起作用的属性设置;如果我正在使用其中一种方式,则我还没找到正确的传递方法。