【发布时间】:2011-02-13 19:54:27
【问题描述】:
我正在尝试使用 1.5 JRE 运行 JUnit 测试,但收到错误消息:
java.lang.UnsupportedClassVersionError: .class 文件中的错误版本号
当我切换到 JRE 1.6(实际上是一个 JDK,但这不重要,对吗?)一切正常。
所以问题是:
- 当前的 JUnit 版本真的需要 Java 6 吗?
- 适用于 Java 5 的最新 JUnit 版本是什么?
【问题讨论】:
我正在尝试使用 1.5 JRE 运行 JUnit 测试,但收到错误消息:
java.lang.UnsupportedClassVersionError: .class 文件中的错误版本号
当我切换到 JRE 1.6(实际上是一个 JDK,但这不重要,对吗?)一切正常。
所以问题是:
【问题讨论】:
对一些类的抽查表明,JUnit 4.8.2 jar 文件是使用 java 5 编译的,或者是使用带有 -target 选项集的 java 6 编译器编译的,因此它可以生成与 java5 兼容的类文件。
更可能的解释是,您不小心编译了要使用 Java 6 JDK 运行的测试。做什么:
javap -verbose -classpath YOUR_TOP_DIRECTORY com.yourname.YourTest
在其输出的顶部说“主要版本”?如果它说50,那么问题是你只为java 6 编译了你的测试类。您需要使用 JDK 5 编译器或将选项 -target 1.5 传递给您的编译器。
【讨论】:
JUnit 4.8.2 的当前 .jar 文件是使用 Java 5 编译的(类版本号为 49.0)。
我记得一个较早的版本意外地是用 Java 6 构建的(并且没有 -target 开关),但这只是一个错误。
【讨论】:
Junit 的 pom.xml 说 jdk 1.5。 http://github.com/KentBeck/junit/blob/master/pom.xml
【讨论】: