首页 文章

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

提问于
浏览
42

我在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 回答

  • 35

    检查编译期间使用的tools.jar是否符合JRE集 . 如果您正在使用eclipse,请将版本验证为:
    转到窗口 - >首选项

    • 通过在左窗格中选择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

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

  • 15
    • 检查是否在路径中安装了jdk "C:\Program Files\Java" 如果没有在机器中安装JDK

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

    • 点击“ JRE ”标签,然后点击 "Installed JREs" > "ADD" > "Standard VM" > Click "Next

    • 选择目录 "C:\Program Files\Java\jdk1.7.x_xx" ,该目录将添加到"installed jres"

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

    • 单击 "Seperate JRE" dropdown 并选择JDK版本 "jdk1.7.x_xx " and click on " Run

    这会有所帮助:)

  • 0

    您需要说出哪个版本的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

  • 2

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

  • 0

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

  • 26

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

    问题得到解决 .

  • 0

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

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

  • 0

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

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

  • 8

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

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

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

  • 2

    去跑选项--->选择外部工具选项---->外部工具配置--->选择ant build ---->选择你的build.xml --->在那里你会找到JDK选项--->选择你的需要JRE .

  • 4

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

    enter image description here

相关问题