不支持的major.minor版本声纳扫描器的例外

时间:2016-09-24 14:43:39

标签: java sonarqube sonar-runner

我正在尝试使用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)

从错误中看,它没有为JAVA / JRE找到正确的版本来运行cli工具。我的理解是该工具应该适用于任何Java 1.7+版本。我正在使用Oracle JDK 1.7.0_55。我也尝试使用OpenJDK 1.8,但我仍然遇到同样的错误。我还检查了我的JAVA_HOME变量被设置为正确的JDK目录。

对正确方向的任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:14)

经过一段时间的努力,我找到了问题的原因。 CLI正在查看您的JAVA_HOME路径变量,以确定它需要使用的Java版本。甚至强硬的默认javajavac命令指向JDK 8,将JAVA_HOME环境变量设置为JDK 8根目录解决了问题。

希望这有助于其他人面临类似的问题。

答案 1 :(得分:3)

这已在此处详细解答:Unsupported major.minor version 52.0和此处:How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version

理由是,当为java 8编译声纳类时,你试图在Java 7或更低版​​本上执行Sonar,从而触发此错误。