web-dev-qa-db-ja.com

サポートされていないmajor.minorバージョンソナースキャナーの例外

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ディレクトリに設定されていることも確認しました。

正しい方向への助けをいただければ幸いです。

9
Amrish

しばらくこれに苦労した後、私は問題の原因を見つけました。 CLIは、Java_HOMEパス変数を調べて、使用する必要のあるJava)のバージョンを特定します。デフォルトのJavaおよびjavacコマンドがJDK 8を指していても、 JDK8ルートディレクトリへのJava_HOME環境変数が問題を解決しました。

これが同様の問題に直面している他の人々に役立つことを願っています。

15
Amrish

これはすでにここで詳細に回答されています: サポートされていないmajor.minorバージョン52. そしてここで: Java.lang.UnsupportedClassVersionErrorを修正する方法:サポートされていないmajor.minorバージョン

理論的根拠は、ソナークラスがJava 8でコンパイルされている場合、Java 7以下でSonarを実行しようとしているため、このエラーが発生することです。

3
Alex