使用ant任务定义的.class文件中的Java UnsupportedClassVersionError错误版本号

使用ant任务定义的.class文件中的Java UnsupportedClassVersionError错误版本号,java,eclipse,ant,Java,Eclipse,Ant,我有一个使用jdk1.5的项目构建,它使用ant作为构建工具。正如您所知,在ant脚本中,我们可以像这样编写自己的自定义任务,稍后我们可以使用它 <taskdef name="loadxml" classname="SomeClass" classpathref="CLASSPATH"/> 该代码在WindowsServer2003中运行良好,但我尝试在Windows7 64位上运行它 目前,我的java home变量指向JDK1.5。在我的系统上安装了Java8。ant版本(按a

我有一个使用jdk1.5的项目构建,它使用ant作为构建工具。正如您所知,在ant脚本中,我们可以像这样编写自己的自定义任务,稍后我们可以使用它

<taskdef name="loadxml" classname="SomeClass" classpathref="CLASSPATH"/>
该代码在WindowsServer2003中运行良好,但我尝试在Windows7 64位上运行它

目前,我的java home变量指向JDK1.5。在我的系统上安装了Java8。ant版本(按ant-version)将作为1.7.1发布

ant脚本工作得非常完美,但是当涉及到上面提到的xml行时,它会出现以下错误

java.lang.UnsupportedClassVersionError: Bad version number in .class file


   at   org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:508)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:397)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.Delegati

ngMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.apache.tools.ant.Main.runBuild(Main.java:758)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.Main.start(Main.java:179)
at org.apache.tools.ant.Main.main(Main.java:268)

Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:116)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:394)

Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1146)
at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1324)
at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1388
)
at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1341)
at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1088)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
我尝试过将JDK更改为64位,反之亦然,尝试过安装不同的JRE,也尝试过不同的ant版本。但有些人说我无法弄清真相

你能解释一下吗

非常感谢

目前,我的java home变量指向JDK1.5

这可能就是问题所在。看起来您正在尝试使用为较新的Java平台编译的Ant版本。在一个古老的Java副本上运行它是行不通的

您应该卸载JDK1.5安装。它已经过时多年了。您已经安装了Java8(我想是JDK),所以请使用它

然后更新JAVA_主页以指向JAVA 8安装

我尝试将JDK更改为64位,反之亦然

那没用。这不是32位对64位的问题。问题是您正在>>使用 目前,我的java home变量指向JDK1.5

这可能就是问题所在。看起来您正在尝试使用为较新的Java平台编译的Ant版本。在一个古老的Java副本上运行它是行不通的

您应该卸载JDK1.5安装。它已经过时多年了。您已经安装了Java8(我想是JDK),所以请使用它

然后更新JAVA_主页以指向JAVA 8安装

我尝试将JDK更改为64位,反之亦然


那没用。这不是32位对64位的问题。问题是您正在>>使用我也有同样的问题(使用Java1.5和Ant1.7.1)。我升级到Ant1.9.7,解决了我的问题。确保更改ANT_HOME和antrc的位置

我也有同样的问题(使用Java1.5和Ant1.7.1)。我升级到Ant1.9.7,解决了我的问题。确保更改ANT_HOME和antrc的位置

我看到过类似的错误,这些错误是由于使用比正在执行的程序更高版本的java编译类文件而导致的。是的,你是对的。但在这种情况下,我似乎找不到更高的。我已经使用javap命令手动检查了类的版本,它是49表示java 5。我看到过类似的错误,这些错误是由于使用比程序执行时更高版本的java编译类文件而导致的。是的,你是对的。但在这种情况下,我似乎找不到更高的。我已经使用javap命令手动检查了这个类的版本,它是作为java5来的。
java.lang.UnsupportedClassVersionError: Bad version number in .class file


   at   org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:508)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:397)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.Delegati

ngMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.apache.tools.ant.Main.runBuild(Main.java:758)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.Main.start(Main.java:179)
at org.apache.tools.ant.Main.main(Main.java:268)

Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:116)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:394)

Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1146)
at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1324)
at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1388
)
at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1341)
at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1088)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)