gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:14:11 25 4
gpt4 key购买 nike

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

<taskdef name="loadxml" classname="SomeClass" classpathref="CLASSPATH"/>

这是 Java 类的样子。

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

class SomeClass extends Task
{
.......................
}

该代码在 Windows Server 2003 中运行良好,但我尝试在 Windows 7 64 位上运行它。

我目前的 java home 变量指向 jdk 1.5。在我的系统上我安装了 java 8。 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 位,反之亦然,也尝试安装不同的 jres,也尝试过不同的 ant 版本。但有些我无法深究。

您能解释一下吗?

非常感谢。

最佳答案

I currently have my java home variable pointing to jdk 1.5.

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

您应该卸载 JDK 1.5 安装。它已经过时了很多年。您已经安装了 Java 8(我假设是 JDK),因此请使用它。

然后更新您的 JAVA_HOME 以指向 Java 8 安装。

I have tried changing the JDK to 64 bit and vice versa

这没有帮助。这不是 32 位与 64 位的问题。问题是您正在通过 JAVA_HOME >>使用<<古老的 JRE/JDK

关于使用 ant 任务定义的 .class 文件中的 Java UnsupportedClassVersionError 错误版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com