Netbeans 8 を使用して Java 6 で Web プロジェクトを開発しています。最近、最も標準的な方法で JUnit から TestNG に切り替えることにしました。Netbeans プロジェクトに TestNG テスト ケースを追加すると、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 であることが判明しました。
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) の経験がまったくないため、失敗しました。私はここで海で迷っていることがわかりました。