gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:19 24 4
gpt4 key购买 nike

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

我使用的是 Java HotSpot 64 位服务器虚拟机(内部版本 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)

大概有一些变体可以使目标通过而起作用,或者某些属性设置应该起作用;如果它是我正在使用的,那么我还没有想出如何正确传递它。

最佳答案

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

关于java - 如何强制 Java 8 wsimport 命令行生成 1.6 目标兼容代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26533331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com