【问题标题】:ant and java 8 - "major version 52 is newer than 51, the highest major version supported by this compiler"ant and java 8 - “主版本 52 比 51 新,此编译器支持的最高主版本”
【发布时间】:2014-07-29 04:08:20
【问题描述】:

我正在尝试将我的 ant 项目从 java 7 升级到 java 8。
(项目部署在“Eclipse Kepler”中,带有“Java™ 8 support to Eclipse Kepler SR2”)

为此,我下载了 ant 1.9.4(根据这篇帖子 http://wiki.eclipse.org/Ant/Java8),并将其配置为我的“蚂蚁之家”。

当我试图编译时得到以下警告: "major version 52 is newer than 51, the highest major version supported by this compiler. [javac] It is recommended that the compiler be upgraded."

但是为工作区定义的编译器是 1.8。 (在 ant 配置中,它将编译器定义为与工作空间相同的编译器..)

知道发生了什么吗?

非常感谢。

艾尔

【问题讨论】:

  • java -version 的输出是什么?
  • java 版本 "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
  • 我目前有同样的问题。 JAVA_HOME 指向正确的 Java 路径(我只安装了一个版本), java -version 说 '1.8.0...' 并且 CLASSPATH 没有设置任何东西。我在 Mac OS X Yosemite 上。
  • "主版本 52 比 51 更新..."。我很好奇是谁发出了这个非常聪明和信息丰富的错误信息。很有帮助。

标签: java eclipse ant


【解决方案1】:

请检查Ant使用的tools.jar是JDK8的,不是JDK7的。

窗口 -> 首选项:

在左侧窗格中,转到 Ant -> Runtime。在 Classpath 选项卡中,检查 Global Entries。

【讨论】:

    【解决方案2】:

    这个错误一般是JDK版本有差异,请检查环境变量中设置的classpath、java -version和JAVA_HOME。

    【讨论】:

      【解决方案3】:

      确保在Classpath变量中添加JAVA_HOME:Window->Java->Build Path->Classpath variables point to "path/to/jdk"

      【讨论】:

        【解决方案4】:

        在 Ubuntu 中,我只是通过从 jdk 配置 javah 来修复它(openjdk 或 oracle jdk 都可以)7 到 8:

        $ javah -classpath . -d jni/ NativeSorting
        ./NativeSorting.class: major version 52 is newer than 51, the highest major version supported by this compiler.
          It is recommended that the compiler be upgraded.
        $ sudo update-alternatives --config javah
        There are 4 choices for the alternative javah (providing /usr/bin/javah).
        
          Selection    Path                                         Priority   Status
        ------------------------------------------------------------
          0            /usr/lib/jvm/java-8-openjdk-amd64/bin/javah   1081      auto mode
        * 1            /usr/lib/jvm/java-7-openjdk-amd64/bin/javah   1071      manual mode
          2            /usr/lib/jvm/java-8-openjdk-amd64/bin/javah   1081      manual mode
          3            /usr/lib/jvm/jdk1.7.0_80/bin/javah            1000      manual mode
          4            /usr/lib/jvm/jdk1.8.0_131/bin/javah           1000      manual mode
        
        Press <enter> to keep the current choice[*], or type selection number: 2
        update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/javah to provide /usr/bin/javah (javah) in manual mode
        $ javah -classpath . -d jni/ NativeSorting
        $ 
        

        【讨论】:

          【解决方案5】:

          添加到所有其他答案: 为我解决这个问题的方法是删除 PATH 环境变量中的冗余/不同 java 路径。

          【讨论】:

            猜你喜欢
            • 2016-11-09
            • 2016-11-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-12
            • 1970-01-01
            • 2019-10-07
            相关资源
            最近更新 更多