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

时间:2011-08-16 03:54:56

标签: java eclipse ant

我在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 : Unsupported major.minor version 51.0

以下是版本:

Apache Ant(TM) version 1.8.2

JDK version is JDK 1.7.0

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

enter image description here

请帮我解决。

12 个答案:

答案 0 :(得分:35)

检查编译期间使用的tools.jar是否符合JRE集。如果您正在使用eclipse,请将版本验证为:
转到窗口 - &gt;首选项
  - 通过在左窗格中选择Ant下的Runtime来检查Ant运行时。检查类路径选项卡下的全局条目。您可以在文件夹路径中看到该版本   - 在左侧窗格中,检查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 \

来添加JRE

答案 1 :(得分:27)

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

答案 2 :(得分:16)

  1. 检查您是否在路径“C:\ Program Files \ Java”中安装了jdk 如果没有在您的计算机中安装JDK

  2. 在Eclipse中,右键单击“build.xml”,然后选择 Run As&gt;外部工具配置

  3. 点击“ JRE ”标签,然后点击“已安装的JRE”&gt; “ADD”&gt; “标准VM”&gt;点击“下一步

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

  5. 选择新的JDK目录,然后点击“确定”

  6. 点击“Seperate JRE”下拉列表并选择JDK版本“jdk1.7.x_xx ”,然后点击“运行

  7. 这会有所帮助:)

答案 3 :(得分:9)

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

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

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

'不支持的major.minor版本51.0'意味着某个代码是为JDK版本编译的,并且您尝试在较旧版本的JDK下运行这些类。 (见here

答案 4 :(得分:4)

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

答案 5 :(得分:2)

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

答案 6 :(得分:2)

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

问题已解决。

答案 7 :(得分:1)

我想在此处添加我的结果以帮助其他人,因为在相关的情况下,这些都没有解决我的问题 我有一个独特的情况,我从weblogic 9.2的工作室到JDK6的Helios。然而,我们的安全专家将我们推到了JDK7,这迫使我的手去了Indigo。

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

就我而言,该项目是Maven,我有JDK 1.8.0,Eclipse:Kepler,我从Eclipse Marketplace安装了M2Eclipse插件。

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

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

答案 10 :(得分:0)

转到运行选项---&gt;选择外部工具选项----&gt;外部工具配置---&gt; 选择ant build ----&gt;选择你的build.xml ---&gt;在那里你会找到JDK选项---&gt;选择你需要的JRE。

答案 11 :(得分:0)

只需检查您的运行时间,转到ant build配置并将jre更改为jdk(如果jdk 1.7则jre应为1.7)。

enter image description here