为什么Groovy编译器显然生成1.5版本的Java?

为什么Groovy编译器显然生成1.5版本的Java?,第1张

概述在JSE版本之间存在差异的一些问题之后,我正在尝试记录用于编译的 Java编译器版本(实际上是Groovy 2.1.9,Grails 2.3.8,Java 1.7.0_60). 经过一番翻找后,我构建了这段代码来读取该类的前导字节 – 请参阅/ http://en.wikipedia.org/wiki/Java_class_file#General_layout (更改类的路径以匹配包名称): c 在JsE版本之间存在差异的一些问题之后,我正在尝试记录用于编译的 Java编译器版本(实际上是Groovy 2.1.9,Grails 2.3.8,Java 1.7.0_60).

经过一番翻找后,我构建了这段代码来读取该类的前导字节 – 请参阅/ http://en.wikipedia.org/wiki/Java_class_file#General_layout

(更改类的路径以匹配包名称):

class CompilerVersionSupport {  public static String getVersion() {    String classAsPath = 'com/my/organisation/CompilerVersionSupport.class';    inputStream stream = (new CompilerVersionSupport()).getClass().getClassLoader().getResourceAsstream(classAsPath);    DatainputStream ins = new DatainputStream (stream)    assert( ins.readUnsignedShort() == 0xcafe )        assert( ins.readUnsignedShort() == 0xbabe )    int minor = ins.readUnsignedShort();    int major = ins.readUnsignedShort();    ins.close();    int javaVersion = major - 44     return "1.$javaVersion"    }     }

麻烦的是,它返回1.5.

会发生什么事?

>查尔斯

解决方法 默认的Groovy行为不是使用与正在使用的JDK相同的字节码版本来编译代码. 1.5是默认的兼容性原因,恕我直言.如果希望编译器输出较新的字节码,则需要明确设置.

例如,如果您使用Maven编译代码,则可以使用GMavenPlus插件.请参阅targetBytecode参数的说明.

如果您不使用Maven,可以使用-Dgroovy.target.bytecode = 1.7或研究特定构建工具的可能性

总结

以上是内存溢出为你收集整理的为什么Groovy编译器显然生成1.5版本的Java?全部内容,希望文章能够帮你解决为什么Groovy编译器显然生成1.5版本的Java?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存