UnsupportedClassVersionErrorの原因及び対処法 †Javaソースをコンパイルして実行しようとしたら以下のようなエラーメッセージが表示されて実行できない時の原因および対処方法です。 java.lang.UnsupportedClassVersionError: Hello : Unsupported major.minor version 52.0 エラー出力例 †以下のようにjavacコマンドでコンパイルして、javaコマンドで実行しようとしたら、以下のようなメッセージが表示された場合の原因および対処方法です。 $ javac Hello.java $ java Hello java.lang.UnsupportedClassVersionError: Hello : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Exception in thread "main" $ 今回使用したソース †class Hello { public static void main(String[] args) { System.out.println("Hello"); } } バージョン異なっていませんか? †javacとjavaのバージョンが異なっていませんか? javac -version java -version 今回、このエラーが発生した理由は以下の通りで、javac > java となっていました。 $ java -version java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode) $ javac -version javac 1.8.0_102 javacのバージョンは1.8でjavaが1.7でした。 再度、PATHを設定し直しバージョン確認しコンパイルおよび実行しています。 $ java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) Client VM (build 25.102-b14, mixed mode) $ javac -version javac 1.8.0_102 同一バージョンになったので、コンパイル&実行してみます。 $ javac Hello.java ; java Hello Hello UnsupportedClassVersionErrorが発生せず、正常に動作しました。 javacでバージョン指定する方法もある †上記では、バージョンの異なるjavacとjavaのため(javac > java)UnsupportedClassVersionErrorが発生しました。 $ java -version java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode) $ javac -version javac 1.8.0_102 source, targetオプションにより、バージョンを指定してコンパイルします。 $ javac -source 1.7 -target 1.7 Hello.java 警告: [options] ブートストラップ・クラスパスが-source 1.7と一緒に設定されていません 警告1個 $ java Hello Hello 以上、UnsupportedClassVersionErrorの原因及び対処方法でした。 |