0

我创建了一个 jar 文件(使用 jdk1.7 编译它)。当我在项目中使用这个 jar 时(使用 JRE 1.6),我得到以下异常 - 不支持的 major.minor 版本 51.0(我想 51.0 是用于 jdk1.7)。我对所有这些操作都使用了 Eclipse IDE。

我想知道这个异常是否是一种规范(在这种情况下)或者它是否只是因为 Eclipse 中的类加载工作方式不同

4

2 回答 2

1

类加载由 JVM 在 eclipse 内部和外部执行。此错误仅表明 Java 7 中类文件的文件格式发生了变化,Java 6 虚拟机不知道未来的类文件格式。

您可以指示 Java 编译器使用以前的 java 版本的类文件格式(在 eclipse 中,您可以在 Properties -> Java Compiler -> JDK compliance 下找到设置)。

此外,您需要验证您是否只使用 JDK 6 中也存在的 API 元素。

于 2013-04-20T11:31:18.243 回答
1

这是意料之中的。专门为 java 版本编译的字节码,不能在较低版本上执行。这是因为它可能具有早期 Java 版本不支持的字节码指令和/或特性。

要编译较低的 java 版本,您需要明确指定编译的目标版本,例如:

javac -target 1.6 ...

在 Eclipse 中,您可以在“属性”>“Java 编译器”>“生成的 .class 文件兼容性”下进行设置。但是一般来说,最好只使用 Java 6 编译器来确保您实际上只使用 Java 6 中包含的特性和库。

于 2013-04-20T11:33:38.523 回答