0

我正在使用 Netbeans 8 在 Java 6 中开发一个 Web 项目。我最近决定以最标准的方式从 JUnit 切换到 TestNG:当我将 TestNG 测试用例添加到我的 Netbeans 项目时,会自动启用 TestNG 库......

...现在我不能再构建我的项目了。错误是:

java.lang.UnsupportedClassVersionError: org/testng/TestNG : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: org.testng.TestNG.  Program will exit.

当我将 Netbeans 中的 Java 平台更改为 Java 7(默认)时,构建成功并且我的测试正常工作。从网上搜索,原来 Java 版本 51 = Java 7。当我在 testng-dist.jar 文件中四处嗅探时,看起来我的构建是用 JDK 7 编译的:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.7.0_17-b02 (Oracle Corporation)
Main-Class: org.testng.TestNG
Implementation-Version: 6.8.1-201304241555

但是当我使用这里指定的替代技术时,我发现它是Java 1.5 编译的:

ca fe ba be 20 20 20 **31** 20 13 01 20 03 28 29 56

(0x31 = 49 = Java 1.5)

因此,除非我误解了事情,否则我的设置没有理由不起作用。

我的 build.xml 和 build-impl.xml 都是完全标准的,因为我没有手动更改任何内容。我不愿意迁移到 Java 7,并且我确信如果可能的话我想使用 TestNG。我曾尝试从 Git 存储库构建 TestNG 源代码,但失败了,因为我完全没有使用 Ant(或 Maven,就此而言)的经验。原来我在这里有点迷路了。

4

1 回答 1

0

我将回答我自己的问题以供将来参考。我尝试了多种方法来解决这个问题,但似乎无法让它在 Java 6 上运行。

于 2014-09-12T12:30:25.117 回答