我有一个使用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 -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版本。但有些我怎么不能深究它。
请你详谈一下。
非常感谢。
答案 0 :(得分:2)
我目前的java home变量指向jdk 1.5。
这可能就是问题所在。看起来您正在尝试使用为较新的Java平台编译的Ant版本。在古老的Java副本上运行它是行不通的。
您应该卸载JDK 1.5安装。它已经过时了。你有一个Java 8(JDK我假设)安装,所以使用它。
然后更新您的JAVA_HOME以指向Java 8安装。
我尝试将JDK更改为64位,反之亦然
这无济于事。它不是32位与64位问题。问题是你是&gt;&gt;使用&lt;&lt;一个古老的JRE / JDK通过你的JAVA_HOME
答案 1 :(得分:0)
我遇到了同样的问题(使用Java 1.5和Ant 1.7.1)。我升级到ant 1.9.7并解决了我的问题。确保更改ANT_HOME,antrc位置。