我有一个groovy脚本,我正在尝试(第一次)使用ant build.xml文件进行编译和运行。它会抛出一个
java.lang.UnsupportedClassVersionError
我搜索了它,结果表明它可能是版本不匹配的原因。好吧,我有java 1.6.0_35和ANT版本1.8.1。可能是错误的原因是什么?请帮忙。
答案 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.jar
,groovy-ant-2.2.0.jar
,groovy-ant-2.2.1.jar
和javap
,他们都显示了:
$ 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
因此,作为一般规则,您应该使用groovy-ant-2.2.1.jar
或完整的groovy-all-2.2.1.jar
(两者都适用于Java 5 +)