【问题标题】:JDK compiler version issueJDK编译器版本问题
【发布时间】:2011-06-23 07:42:06
【问题描述】:

我使用 Ant 编译 Java。该项目必须使用 JDK 1.5 编译,但是部分代码引用了使用 JDK 1.6 版本编译的包。 我将 JAVA_HOME 设置为 1.5 ,在此引用处抛出错误

[javac] 类文件的50.0版本错误,应该是49.0

不将参考版本降级到1.5有什么出路

【问题讨论】:

    标签: java


    【解决方案1】:

    你问的是不可能的。您应该使用 JDK 1.5 编译您的库。

    【讨论】:

      【解决方案2】:

      一旦在某个版本上编译了 Java,您就不能在旧版本的 Java 上使用该版本。

      您正在使用的软件包可能有一个适用于旧版本 Java 的可用版本,或者您可以获取源代码并使用旧版本重新编译(如果它不使用任何 Java 6 库/ 功能)。

      【讨论】:

      • 同样是在 NetBeans IDE 上编译没有问题。我需要它来支持命令行
      • @Pushparaj 在 NetBeans IDE 上编译同样没有问题 你确定 NetBeans 使用的是 JDK 5 吗?
      【解决方案3】:

      这样想:

      您使用的库是使用 JDK 6 编译的。它可能使用了 Java 6 中引入的一些功能(这些功能不属于 Java 以前版本的一部分)

      当你使用 JDK 5 编译和运行时,你期望编译器(和运行时)在遇到这个“新”特性时会做什么? JDK 5 不知道这个特性,会被“迷惑”

      为避免在运行时出现这种混淆,编译本身会失败。

      你有两个选择:

      • 使用 JDK 6 编译您的项目。
      • 获取库的 JDK 5 编译版本

      如果您的项目使用 JDK 6 并且库是使用 JDK 5 编译的,那么由于向后兼容性,您就不会遇到这个问题。

      【讨论】:

      • 更具体地说,代码只使用JDK 1.6版本的jar。当Java级别设置为1.5时,NetBeans成功编译项目
      • @Pushparaj 与 NetBeans 一起使用的编译器和与 ant 一起使用的编译器 - 它们是否相同?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多