java编译器&x27;s目标版本“;jsr14“;使用JDK7/8

java编译器&x27;s目标版本“;jsr14“;使用JDK7/8,java,javac,java-7,Java,Javac,Java 7,有谁能告诉我javac的jsr14目标选项在JDK7/8中仍然可用吗 说 最新的OpenJDK源代码包(OpenJDK-7-ea-src-b130-18_feb_2011.zip)仍然包含源代码中的标志(langtools/src/share/classes/com/sun/tools/javac/jvm/Target.java),但它从未得到支持,因此依赖它是个坏主意 为什么需要它?自1.5版的beta版以来,该标志已被放弃。 它只允许1.5beta编译器在默认情况下绕过泛型检查/解析,而泛型

有谁能告诉我
javac
jsr14
目标选项在JDK7/8中仍然可用吗


最新的OpenJDK源代码包(
OpenJDK-7-ea-src-b130-18_feb_2011.zip
)仍然包含源代码中的标志(
langtools/src/share/classes/com/sun/tools/javac/jvm/Target.java
),但它从未得到支持,因此依赖它是个坏主意


为什么需要它?

自1.5版的beta版以来,该标志已被放弃。 它只允许1.5beta编译器在默认情况下绕过泛型检查/解析,而泛型规范尚未最终确定。
一旦1.5发布,这面旗帜就变得毫无意义。新的编译器版本可能不会在遇到错误时给出错误,但很可能会默默地忽略它。

我们在OSGi中大量使用-jsr14,因为它允许我们在API中使用泛型,但仍然部署在1.4环境中,这在嵌入式系统中仍然很流行。不幸的是,他们使JDK 7与Java6和Java5不向后兼容。JavaC1.7忽略JAR文件中实际存在的通用信息。幸运的是,在运行时没有问题,因为无论如何都会忽略此信息。这并不是说这是一个无证的特征

不幸的是,前线的人们往往很少关心那些不能及时了解最新和最伟大的人。我猜甲骨文真的不再关心嵌入式市场了

我们现在可能需要提供两个JAR,一个用于嵌入式,一个用于JDK 7。糟透了


这是我们提交的错误报告:

哪一个是正确的?“将会是”或“将会是”。很抱歉我醒着的时候不会说英语“jsr14”的目标版本是什么?你的意思是-目标1.4?看看这个EJP。JSR14是泛型。您能澄清一下您的问题吗?对不起,我指的是“-target jsr14”编译器选项,因为我以前为我的Java ME机顶盒编写1.5代码并为1.4 target进行编译。@Jin:我会使用一个受支持的目标并使用类似于或的东西来后处理结果。Eclipse P2使用jsr14目标也是出于类似的原因。不幸的是,运行时并不是没有问题。OpenJDK在对使用jsr14目标编译的类型使用反射时崩溃。这在使用SpringDM或Blueprint时尤其有问题,如图所示:我在本期OSGi中运行过。有没有OSGi bug报告我可以投票支持?注意:JDK bug报告的解决方案是:不是一个缺陷,它必须在OSGi端修复。我在这里提出了一个问题:请投赞成票。
$ javac -source 1.5 -target jsr14 Hello.java