javac -target 1.3是否保证类将在JRE 1.3下运行?

时间:2010-11-17 15:27:36

标签: java javac

文章“Don’t be fooled by javac -target 1.4”表明使用-target 1.4进行编译仍然可以创建不能在JRE 1.4上运行的类文件。

它还描述了-bootclasspath参数如何解决此问题。

现在我的问题:如果我使用Sun JDK 1.6版本的javac进行编译,使用设置为1.3的源和目标参数,可以安全地假设已编译的类可以在JRE 1.3上运行吗?

2 个答案:

答案 0 :(得分:4)

如果您使用标准库中1.3中不存在的任何方法或类,它们将无法工作,因为这些文件未编译到您的程序中,但它们是JVM库的一部分。

答案 1 :(得分:0)

事实上,正如文章所说,您的代码将与1.3字节码兼容,但不能与1.3链接。因此,只要您使用来自比预期版本1.3更新的版本的rt.jar,就可以使用post 1.3类或方法(作为其示例说明)。

因此,开发1.3的唯一可靠方法是使用1.3 JDK ......或依赖验证工具,例如......哦废话!我确定有一个maven报告插件可以检查你的代码是否与预期的JDK兼容,但无法找回它的命名方式。

但是,请注意存在像Retrotranslator这样的工具,它们将使用您的1.5版代码使其适应以前的版本...只要您的代码完全依赖于JDK,因为它们可能无法处理所有外部API依赖项