2010-10-30 53 views
10

谁能告诉我的javacjsr14目标选项将仍然可用JDK7/8?java编译器的目标版本“jsr14”与JDK7/8

说,

$ javac -source 1.5 -target jsr14 Hello.java 
+0

哪一个是对的? “将仍然”或“仍然会”。抱歉。我醒来时不会说英语。 :) – 2010-10-30 12:21:13

+0

什么“jsr14”目标版本?你的意思是 - 瞄准1.4? – EJP 2010-10-31 02:35:20

+0

检查EJP。 http://www.ibm.com/developerworks/java/library/j-jtp02277.html – 2010-10-31 03:15:08

回答

4

最新的OpenJDK源代码包(openjdk-7-ea-src-b130-18_feb_2011.zip)仍然包含在源(langtools/src/share/classes/com/sun/tools/javac/jvm/Target.java)的标志,但一直没有得到支持,因此依靠这是一个坏主意。

为什么你需要它?

+0

因为我曾经为我的Java ME STBoxes编写1.5代码并编译1.4目标。 – 2011-05-02 11:32:39

+4

@Jin:我会使用其中一个支持的目标,并使用类似[Retroweaver](http://retroweaver.sourceforge.net/)或[Retrotranslator](http://retrotranslator.sourceforge.net/)的内容发布处理结果。 – 2011-05-02 11:34:37

+0

但是jsr14对此很完美... – 2012-04-17 20:35:42

4

该标志自1.5测试阶段以来已被放弃。 它只包含在允许1.5 beta编译器默认绕过泛型检查/解析,而泛型规范未完成时。 1.5版发布后,该标志变得毫无意义。新的编译器版本可能不会在遇到它时给出错误,但很可能会默默地忽略它。

12

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

不幸的是,人们在前面往往有不能只更新到最新和最伟大的人很少考虑。猜猜甲骨文真的不再关心嵌入式市场了。

我们将可能现在有船两个JAR,一个用于嵌入式和一个用于JDK 7吮吸。

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

+0

由于类似的原因,Eclipse P2使用jsr14目标。不幸的是,运行时没有问题。在对使用jsr14目标进行编译的类型使用反射时,OpenJDK爆炸。这在使用Spring DM或Blueprint时特别有问题,如下所示:https://gist.github.com/1251497 – mpilquist 2011-09-29 18:23:04

+1

我在这个OSGi问题中运行。有没有我可以投票的OSGi错误报告?注意:JDK错误报告的解决方案是:不是缺陷 然后它必须在OSGi方面得到修复。 – Puce 2012-03-11 16:41:12

+0

我在这里提交了一个问题:https://issues.apache.org/jira/browse/FELIX-3455 请投票。 – Puce 2012-04-12 14:55:44