【问题标题】:Why is Ant giving me a Unsupported major.minor version error为什么 Ant 给我一个 Unsupported major.minor 版本错误
【发布时间】:2011-10-27 18:13:01
【问题描述】:

我正在 Ant 中运行这个目标。

<target name="compile" depends="init"
    description="compile the source " >
    <!-- Compile the java code from ${src} into ${build} -->
    <javac srcdir="${src}" destdir="${build}"/>
</target>

它给了我这个错误。

C:\Users\..\workspace\..\build.xml:21: java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main:不支持的major.minor 51.0版

以下是版本:

Apache Ant(TM) version 1.8.2

JDK version is JDK 1.7.0

这是我在 Eclipse 中的编译器设置。

请帮我解决。

【问题讨论】:

  • 项目选择了什么Java编译器?你最近重建了吗?
  • 我不确定该项目选择了什么编译器。我正在使用 Eclipse,编译器合规级别为 1.6。我不确定这是否能回答问题。
  • IIRC,Java 编译器设置在项目的属性中。
  • @trashgod 我附上的屏幕截图能告诉你什么吗?
  • 也检查项目级别设置,但我猜您在要求编译器生成 1.6 兼容类时使用的是 1.7 功能。

标签: java eclipse ant


【解决方案1】:

您需要说出 Ant 的哪个版本以及 JVM 的哪个版本。

你可以运行ant -v查看Ant正在使用哪些设置as per the doc

Ant 1.8* requires JDK 1.4 或更高版本。

“Unsupported major.minor version 51.0”表示某处代码是为某个版本的 JDK 编译的,并且您正试图在旧版本的 JDK 下运行这些类。 (见here

【讨论】:

  • 这是有道理的,在我创建这个问题之前,我已经查看了您包含的链接。我发布了这个问题,因为似乎我“不应该”有这个问题。我正在使用 Ant/JDK/JRE/Spring/Hibernate 的所有最新版本,甚至尝试更新到最新版本的 Eclipse 以确保这不是原因,但仍然出现错误。我正在寻找其他答案。
  • 我没有使用 eclipse 并且得到同样的错误,这与 java 版本 和用于编译 ant 的版本有关。您可以在这里找到更多信息:hybrisdude.blogspot.com/2015/09/…
【解决方案2】:

运行时 jre 在构建配置窗口中设置为 jre 6 而不是 jre 7。

【讨论】:

  • 顺便说一句,因为这是 v6 和 v7 配置错误的问题,为什么报告不支持版本号的错误消息是 5 / 1.0 ?
【解决方案3】:

将 JRE 的 JDK 版本下载到已安装的 JRE 并使用它。
在 Eclipse Indigo 中,如果您在运行配置中检查 ant 的类路径选项卡,您将看到它默认为从系统添加 tools.jar。因此,如果您使用 Java7 启动 Eclipse 并使用单独的 JRE6 运行 ant 构建,则会生成 UnsupportedClassVersionError。当我添加 JDK 版本时,Eclipse 从 JDK 中提取了 tools.jar,我的 ant 任务运行成功。

【讨论】:

    【解决方案4】:

    检查编译期间使用的 tools.jar 是否符合 JRE 集。如果您在 Eclipse 上,请验证版本为:
    转到窗口->首选项
    - 通过在左窗格中选择 Ant 下的 Runtime 来检查 Ant Runtime。检查类路径选项卡下的全局条目。您可以在文件夹路径中看到版本。
    - 在左侧窗格中检查 Java 下已安装的 JRE。检查版本。
    当我选择的 JRE 是 1.6.0_24 并且 Ant 运行时中的 tools.jar 来自 jdk 1.7 时,我也遇到了同样的问题 如果它们都来自不同的版本 - 1.6/1.7,请通过更正它们的路径来更正它们。 通常,tools.jar 可以在:C:\Program Files\Java\jdk1.x.x\lib 中找到。同样,如果需要,将 JRE 指向 C:\Program Files\Java\jdk1.x.x\

    【讨论】:

    • 在 JDK 7 上安装 JDK 6 时遇到了同样的问题
    • 在 JDK7 中构建相同的问题。您必须安装实际的旧 JDK,以便可以将 tools.jar 文件替换为旧版本。这很痛苦,但它有效。
    【解决方案5】:

    如果您收到此错误是因为您有意尝试构建 Java 6,但您在 Eclipse 的其他地方有 Java 7,那么可能是因为您在 Java 6 环境中引用了 Java 7 tools.jar .

    您需要安装 JDK 6(不是 JRE)并将 JRE 6 tools.jar 添加为构建配置的类路径中的用户条目,列在 JRE 7 @987654323 上方@。

    【讨论】:

      【解决方案6】:

      我想在此处添加我的结果以帮助其他人,因为虽然相关,但这些都没有解决我的问题。
      我有一个独特的情况,我从 weblogic 9.2 的研讨会到使用 JDK6 的 Helios。然而,我们的安全专家将我们推向了 JDK7,这迫使我选择了 Indigo。

      最后,我使用 sysinternals 进程资源管理器来查找当前是否有任何东西正在使用我系统上仍然存在的 JDK6 文件夹。果然是Eclipse。我打开eclipse.ini,第二行引用的是JDK6,我把它换成JDK7目录,启动Eclipse,构建成功。

      【讨论】:

        【解决方案7】:

        造成这种情况的一个可能原因是在 Ant 构建选项中选择了不正确的 JRE。右键单击 build.xml 并选择“Run As...”,然后选择“Ant Build...”,确保在配置选项对话框的 JRE 选项卡下选择了正确的 JRE。您将看到一个“单独的 JRE”选项;确保在单击“运行”之前从下拉列表中选择了适当的 jdk。

        【讨论】:

        • 这是我检查过的所有回复的结果。这是我认为的正确答案。
        【解决方案8】:
        1. 检查你是否在"C:\Program Files\Java"路径下安装了jdk如果没有在你的机器上安装JDK

        2. 在 Eclipse 中,右键单击“build.xml”,然后选择Run As > External Tools Configuration

        3. 点击“JRE”标签,然后点击“Installed JREs”>“ADD”>“Standard VM”>点击“Next

        4. 选择目录“C:\Program Files\Java\jdk1.7.x_xx”,该目录将添加到“已安装的jres”中

        5. 选择新的JDK目录并点击“确定”

        6. 点击“单独的JRE”下拉菜单并选择JDK版本“jdk1.7.x_xx”并点击“运行 >"

        这会有所帮助:)

        【讨论】:

        • 外部工具配置中找不到 JRE 选项卡:(
        【解决方案9】:

        我遇到了同样的问题。然后我进入 Run as -> Ant build...->jre。 我发现使用的 jre 是单独的 JRE,它是默认的 eclipse JRE(1.6)。 然后我去了 perferences ->installed JREs 。 并将默认eclipse JRE的位置更改为我的jdk(1.7)。

        问题已解决。

        【讨论】:

        • 这也是我解决问题的方法。
        【解决方案10】:

        在我的例子中,项目是一个 Maven,我有 JDK 1.8.0,Eclipse : Kepler,我从 Eclipse Marketplace 安装了 M2Eclipse 插件。

        更改编译器级别没有帮助。

        最后我使用了最新版本的 eclipse (Luna),编译器级别 1.7,同样的 M2Eclipse 插件,问题解决了。

        【讨论】:

          【解决方案11】:

          进入运行选项--->选择外部工具选项---->外部工具配置---> 选择 ant build ----> 选择您的 build.xml ---> 在那里您将找到 JDK 选项---> 选择您所需的 JRE。

          【讨论】:

            【解决方案12】:

            只需通过转到 ant 构建配置并将 jre 更改为 jdk(如果 jdk 1.7 那么 jre 应该是 1.7)来检查您的运行时间。

            enter image description here

            【讨论】:

              猜你喜欢
              • 2016-12-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-03-25
              • 1970-01-01
              • 1970-01-01
              • 2022-06-17
              相关资源
              最近更新 更多