使用ANT编译groovy脚本时,不支持major.minor版本51.0

时间:2013-11-26 20:37:41

标签: java ant groovy

我有一个groovy脚本,我正在尝试(第一次)使用ant build.xml文件进行编译和运行。它会抛出一个

java.lang.UnsupportedClassVersionError

我搜索了它,结果表明它可能是版本不匹配的原因。好吧,我有java 1.6.0_35和ANT版本1.8.1。可能是错误的原因是什么?请帮忙。

2 个答案:

答案 0 :(得分:4)

可能是您正在使用已安装的JDK 7编译它。并且运行它使用系统路径上的JRE 6。

您可以使用命令检查版本:

java -version
javac -version

<强>更新

这是Groovyc本身需要JDK 7.您可以尝试运行早期Groovy版本之一或升级JDK。

答案 1 :(得分:1)

org.codehaus.groovy.ant.Groovyc不应该要求Java 7,它应该需要Java 5.

事实上,我刚刚用groovy-all-2.2.0.jar检查了groovy-all-2.2.1.jargroovy-ant-2.2.0.jargroovy-ant-2.2.1.jarjavap,他们都显示了:

$ javap -verbose org/codehaus/groovy/ant/Groovyc.class 
Classfile org/codehaus/groovy/ant/Groovyc.class
  Last modified 18-Nov-2013; size 26620 bytes
  MD5 checksum 6d629004a728203e26a1671626cf3dab
  Compiled from "Groovyc.java"
public class org.codehaus.groovy.ant.Groovyc extends org.apache.tools.ant.taskdefs.MatchingTask
  SourceFile: "Groovyc.java"
  InnerClasses:
       #306; //class org/codehaus/groovy/ant/Groovyc$1
       public static #488= #114 of #698; //Entry=class java/util/Map$Entry of class java/util/Map
  minor version: 0
  major version: 49
  flags: ACC_PUBLIC, ACC_SUPER

major version: 49是Java 5.

唯一需要注意的是,如果您使用indy罐子。这些是使用new InvokeDynamic support

的Java 7构建

因此,作为一般规则,您应该使用groovy-ant-2.2.1.jar或完整的groovy-all-2.2.1.jar(两者都适用于Java 5 +)