代码之家  ›  专栏  ›  技术社区  ›  mjn anonym

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

  •  4
  • mjn anonym  · 技术社区  · 14 年前

    文章“ Don’t be fooled by javac -target 1.4 “显示使用-target 1.4编译仍然可以创建类文件,这些类文件将不会在JRE 1.4上运行。

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

    现在我的问题是:如果我使用sun jdk 1.6版本的javac进行编译,使用设置为1.3的源和目标参数,那么假设编译后的类可以在jre1.3上工作是安全的吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Powerlord    14 年前

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

        2
  •  0
  •   Joachim Sauer    14 年前

    事实上,正如本文所说,您的代码将与1.3兼容,但不能与1.3链接。因此,只要使用 rt.jar 来自比预期的1.3版本更新的版本。

    因此,为1.3开发的唯一可靠方法是使用1.3 JDK…或者依靠验证工具,比如…哦,废话!我确信有一个Maven报告插件可以检查您的代码是否与预期的JDK兼容,但无法找到它的名称。

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