关于java:为什么Ant给我一个不支持的major.minor版本错误

Why is Ant giving me a Unsupported major.minor version error

我在蚂蚁中运行这个目标。

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

它给了我这个错误。

1
2
C:\Users\..\workspace\..\build.xml:21: java.lang.UnsupportedClassVersionError:
    com/sun/tools/javac/Main : Unsupported major.minor version 51.0

以下是版本:

1
2
3
Apache Ant(TM) version 1.8.2

JDK version is JDK 1.7.0

这是Eclipse中的编译器设置。

enter image description here

请帮我解决。


检查编译期间使用的tools.jar是否符合JRE集。如果您在Eclipse上,请验证以下版本:转到窗口->首选项-通过在左窗格中选择Ant下的Runtime来检查Ant运行时。检查ClassPath选项卡下的全局条目。您可以在文件夹路径中看到版本。-在左侧窗格上,在Java下安装JRE。检查版本。当我选择的jre是1.6.0_24,而tools.jar在Ant运行时来自JDK1.7时,我也遇到了同样的问题。如果这两个版本都来自不同的版本-1.6/1.7,则通过更正路径来更正它们。通常,To.S.JAR可以在:C:程序文件javajdk1.x.xLIB中找到。同样,如果需要,将JRE指向C:程序文件javajdk1.x.x.


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


  • 检查是否在"C:程序文件 Java"中安装了JDK,如果没有在机器中安装JDK

  • 在Eclipse中,右键单击"build.xml",然后选择运行方式>外部工具配置。

  • 点击"JRE"选项卡,然后点击"Installed JRE">"Add">"Standard VM">点击"Next"。

  • 选择目录"c:程序文件javajdk1.7.xxxx",目录将被添加到"安装的JRE"中。

  • 选择新的JDK目录并单击"确定"

  • 单击"分离JRE"下拉列表,选择JDK版本"JDK1.7.x_xx",然后单击"运行"

  • 这将有助于:)


    您需要说明Ant的哪个版本和JVM的哪个版本。

    您可以运行ant -v来查看根据文档Ant使用的设置。

    Ant 1.8*需要JDK 1.4或更高版本。

    "unsupported major.minor version 51.0"意味着某个地方的代码是为JDK的某个版本编译的,而您正试图在旧版本的JDK下运行这些类。(见此处)


    一个可能的原因是在Ant构建选项中选择的JRE不正确。右键单击build.xml并选择"运行方式…",然后选择"ant build…",确保在"配置选项"对话框的jre选项卡下选择了正确的jre。您将看到一个"单独的JRE"选项;在单击"运行"之前,请确保从下拉列表中选择了适当的JDK。


    我也遇到了同样的问题。然后我开始运行as->ant build…->jre。我发现使用的JRE是单独的JRE,它是默认的EclipseJRE(1.6)。然后我转到Perferences->Installed JRE。并将默认EclipseJRE的位置更改为my JDK(1.7)。

    问题解决了。


    将JRE的JDK版本下载到已安装的JRE,然后使用它。
    在EclipseIndigo中,如果您在Ant的运行配置上检查ClassPath选项卡,您将看到它默认为从系统中添加tools.jar。因此,如果您使用Java7启动Eclipse,并使用单独的JRE6运行一个Ant构建,它将生成一个不受支持的ClassVersionError。当我添加JDK版本时,Eclipse从JDK中获取了tools.jar,我的Ant任务成功运行。


    我想在这里添加我的结果来帮助其他人,尽管相关,但这些都没有解决我的问题。我有一个独特的情况,从WebLogic9.2的研讨会到带JDK6的Helios。然而,我们的安全专家把我们推进了JDK7,这迫使我的手去了靛蓝。

    最后,我使用SysInternals Process Explorer查找当前是否有任何东西正在使用我的系统上仍然存在的JDK6文件夹。当然是日食。我打开eclipse.ini,第二行引用了jdk6,我用jdk7目录替换了它,启动了eclipse,构建成功。


    只需通过转到Ant构建配置检查运行时间,并将JRE更改为JDK(如果JDK 1.7,则JRE应为1.7)。

    在此处输入图像描述


    转到运行选项--->选择外部工具选项---->外部工具配置--->选择ant build---->选择build.xml--->在这里您将找到jdk选项--->选择所需的jre。


    在我的例子中,这个项目是一个Maven,我有JDK1.8.0,Eclipse:Kepler,我从EclipseMarketplace安装了M2Eclipse插件。

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

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


    如果您是因为有意地尝试构建Java 6,而在Eclipse其他地方拥有Java 7,那么这可能是因为您在Java 6环境中引用Java 7 EDCOX1 1。

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