java编译器的目标版本“jsr14”与JDK7 / 8

任何人jsr14告诉我javacjsr14目标选项仍然可用于JDK7 / 8吗?

说,

 $ javac -source 1.5 -target jsr14 Hello.java 

我们在OSGi中大量使用-jsr14,因为它允许我们在API中使用generics但仍然部署在1.4环境中,这些环境在嵌入式环境中仍然很流行。 不幸的是,他们使 JDK 7不能向后兼容Java 6和5.Javac 1.7忽略了JAR文件中实际存在的通用信息。 幸运的是,在运行时没有问题,因为无论如何都会忽略此信息。 并不是说这是一些无证的function……

不幸的是,前线人员往往很少关注那些不能仅仅更新到最新和最伟大的人。 猜猜Oracle真的不再关心嵌入式市场了。

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

这是我们提交的错误报告: http : //bugs.sun.com/bugdatabase/view_bug.do?bug_id=7078419

最新的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.5 beta编译器在generics规范未最终确定时默认绕过generics检查/解析。 一旦1.5被释放,那面旗帜变得毫无意义。 新的编译器版本在遇到它时可能不会出错,但很可能会默默地忽略它。