错误的类文件使 ant 构建失败



我刚刚将jdk1.6更改为1.8,并且在进行新的ant构建时,它给出了以下错误消息:

[javac] /usr/workspace/test/src/JsonString.java:7: cannot access java.lang.Object
[javac] bad class file: java/lang/Object.class(java/lang:Object.class)
[javac] class file has wrong version 52.0, should be 50.0
[javac] Please remove or make sure it appears in the correct subdirectory of the classpath.
[javac] public class JsonString {
[javac] 

这很奇怪。 Object类应该在java1.8,怎么会不好?有谁知道如何解决这个问题?

首先检查javac任务是否未使用默认编译器以外的特定编译器。如果您将 executable 属性设置为派生特定编译器(以及 fork="yes"),则可能会发生这种情况,如任务文档中所述:

可执行

javac 可执行文件的完整路径,以便在 fork="yes" 的情况下使用。缺省为当前正在运行 Ant 的 Java 版本的编译器。如果 fork="no"则忽略。 从 Ant 1.6 开始,此属性也可用于在使用 jikes、jvc、gcj 或 sj 时指定可执行文件的路径。

如果您只是调用javac而不指定任何外部编译器,那么 Ant 将使用运行 Ant 的 Java 版本附带的编译器。从错误消息来看,它显然使用的是 Java 1.6 编译器(类文件的版本为 50.0)。Ant 通常使用在 PATH 环境变量中找到的 java 可执行文件运行。因此,请确保在 PATH 变量中指定的第一个 Java 目录是 Java 1.8。

理想情况下,您应该将JAVA_HOME设置为 Java 1.8 的路径,并PATH引用JAVA_HOME本身,以便两者都指向相同的安装。

JAVA_HOME -> /path_to_jdk1.8
PATH -> %JAVA_HOME%;...;/path_to_some_other_jdk

相关内容

  • 没有找到相关文章

最新更新