SonarQubeを使用してソースコードを分析しようとしています。コマンドラインから分析を実行するためのツールとしてsonar-scanner
を使用しようとしています。このドキュメント記事に示されているガイドラインに従いました: http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
sonar-scanner -h
を実行してインストールをテストしようとすると、次のエラーが発生します。
➜ ~ sonar-scanner -h
Exception in thread "main" Java.lang.UnsupportedClassVersionError: org/sonarsource/scanner/cli/Main : Unsupported major.minor version 52.0
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClass(ClassLoader.Java:800)
at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:142)
at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:449)
at Java.net.URLClassLoader.access$100(URLClassLoader.Java:71)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:361)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:355)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:354)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:425)
at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:308)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:358)
at Sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.Java:482)
エラーから、CLIツールを実行するためのJava/JREの適切なバージョンが見つからないようです。私の理解では、このツールはどのJava 1.7+バージョンでも動作するはずです。Oracle JDK 1.7.0_55
を使用しています。OpenJDK 1.8
も使用しようとしましたが、同じエラーが発生します。 。また、Java_HOME
変数が正しいJDKディレクトリに設定されていることも確認しました。
正しい方向への助けをいただければ幸いです。
しばらくこれに苦労した後、私は問題の原因を見つけました。 CLIは、Java_HOME
パス変数を調べて、使用する必要のあるJava)のバージョンを特定します。デフォルトのJava
およびjavac
コマンドがJDK 8を指していても、 JDK8ルートディレクトリへのJava_HOME環境変数が問題を解決しました。
これが同様の問題に直面している他の人々に役立つことを願っています。
これはすでにここで詳細に回答されています: サポートされていないmajor.minorバージョン52. そしてここで: Java.lang.UnsupportedClassVersionErrorを修正する方法:サポートされていないmajor.minorバージョン
理論的根拠は、ソナークラスがJava 8でコンパイルされている場合、Java 7以下でSonarを実行しようとしているため、このエラーが発生することです。