在 Java 1.5 项目中使用 Jmockit 时出现 UnsupportedClassVersionError
UnsupportedClassVersionError while using Jmockit in a Java 1.5 Project
我正在尝试在 JUnit 测试中使用 JMockit,但是在 运行 来自 Eclipse 的测试时我收到了 UnsupportedClassVersionError。这是一个 Java 1.5 项目,我在构建路径中有 JDK 1.5.0.22,class 路径中的 JUnit 版本是 4.11(从 Maven 存储库下载)
java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access0(URLClassLoader.java:56)
at java.net.URLClassLoader.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:133)
我仔细阅读了 JMockit 安装说明并进行了以下更改;
- 在 class 路径 Junit.jar 之前有 jmockit.jar
- 将jmockit.jar作为初始化参数传递给JVM
- 项目使用 JDK 安装的 JRE 而不是 "plain" JRE
我花了很多时间试图解决这个问题:(,但没有运气。如果你有解决方案,请告诉我?我在这里错过了什么?
您没有指定您使用的 JMockit 版本;但是在我看来你 运行 喜欢这个:
From this version on, JMockit requires Java 6 or newer when running tests;
JRE 1.5 is no longer supported. Note that this only applies to the JRE/JDK
used for test execution; class files compiled for older versions of Java
are still supported.
那是 as of JMockit 1.8,去年 4 月发布。
顺便说一句,这是可以预料的,因为 Java 1.5 已经五年多没有得到公开支持了。
我正在尝试在 JUnit 测试中使用 JMockit,但是在 运行 来自 Eclipse 的测试时我收到了 UnsupportedClassVersionError。这是一个 Java 1.5 项目,我在构建路径中有 JDK 1.5.0.22,class 路径中的 JUnit 版本是 4.11(从 Maven 存储库下载)
java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access0(URLClassLoader.java:56)
at java.net.URLClassLoader.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:133)
我仔细阅读了 JMockit 安装说明并进行了以下更改;
- 在 class 路径 Junit.jar 之前有 jmockit.jar
- 将jmockit.jar作为初始化参数传递给JVM
- 项目使用 JDK 安装的 JRE 而不是 "plain" JRE
我花了很多时间试图解决这个问题:(,但没有运气。如果你有解决方案,请告诉我?我在这里错过了什么?
您没有指定您使用的 JMockit 版本;但是在我看来你 运行 喜欢这个:
From this version on, JMockit requires Java 6 or newer when running tests;
JRE 1.5 is no longer supported. Note that this only applies to the JRE/JDK
used for test execution; class files compiled for older versions of Java
are still supported.
那是 as of JMockit 1.8,去年 4 月发布。
顺便说一句,这是可以预料的,因为 Java 1.5 已经五年多没有得到公开支持了。