【问题标题】:How to force Java 8 wsimport command-line to generate 1.6 target compatible code如何强制 Java 8 wsimport 命令行生成 1.6 目标兼容代码
【发布时间】: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)

大概在传递目标时会有一些变化,或者一些应该起作用的属性设置;如果是我用的,那我还没想好怎么正确传递。

【问题讨论】:

    标签: java javac wsimport


    【解决方案1】:

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

    【讨论】:

    • 不错!我相信这会起作用,我可以合理地在构建发生的地方合并第二个命令。一旦证明有效,我就会接受(在那之前,如果有人知道如何在 wsimport 中修复,我很想知道)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多