【发布时间】:2014-10-23 16:56:14
【问题描述】:
我正在尝试升级现有的构建系统以使用 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。
我尝试使用 wsimport 的 -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)
大概在传递目标时会有一些变化,或者一些应该起作用的属性设置;如果是我用的,那我还没想好怎么正确传递。
【问题讨论】: