• SonarQube执行代码分析时,报错ERROR: Unable to create symbol table for : /**/*.java java.lang.IllegalArgumentException: Unsupported class file major version 55


    若要转载本文,请务必声明出处:https://www.cnblogs.com/zhongyuanzhao000/p/11686633.html

    起因:

    最近正在尝试SonarQube的简单使用,但是当在项目的根目录执行命令sonar-scanner时,出现了报错如下:

    ERROR: Unable to create symbol table for : /usr/local/workspace/simple-java-maven-app/src/main/java/com/mycompany/app/App.java
    java.lang.IllegalArgumentException: Unsupported class file major version 55
    	at org.objectweb.asm.ClassReader.<init>(ClassReader.java:166)
    	at org.objectweb.asm.ClassReader.<init>(ClassReader.java:148)
    	at org.objectweb.asm.ClassReader.<init>(ClassReader.java:136)
    	at org.sonar.java.resolve.BytecodeCompleter.loadClass(BytecodeCompleter.java:242)
    	at org.sonar.java.resolve.Symbols.<init>(Symbols.java:176)
    	at org.sonar.java.resolve.SemanticModel.createFor(SemanticModel.java:60)
    	at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:109)
    	at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:96)
    	at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:68)
    	at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:116)
    	at org.sonar.java.JavaSquid.scan(JavaSquid.java:110)
    	at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:93)
    	at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53)
    	at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88)
    	at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82)
    	at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68)
    	at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:88)
    	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:182)
    	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
    	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
    	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:312)
    	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:307)
    	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:281)
    	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
    	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
    	at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:48)
    	at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:81)
    	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
    	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
    	at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:132)
    	at org.sonar.batch.bootstrapper.Batch.doExecuteTask(Batch.java:116)
    	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:71)
    	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
    	at com.sun.proxy.$Proxy0.execute(Unknown Source)
    	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:185)
    	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:137)
    	at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
    	at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
    	at org.sonarsource.scanner.cli.Main.main(Main.java:61)
    

    分析:

    从日志中可以看到Unsupported class file major version 55,这说明是jdk版本的不一致所导致的。
    注意,version 55 其实指的就是 jdk 1.11版本。
    而我通过执行命令sonar-scanner -v输出如下:

    [root@node1 app]# sonar-scanner -v
    INFO: Scanner configuration file: /usr/local/sonar-scanner/conf/sonar-scanner.properties
    INFO: Project root configuration file: /usr/local/workspace/simple-java-maven-app/sonar-project.properties
    INFO: SonarQube Scanner 4.0.0.1744
    INFO: Java 11.0.3 AdoptOpenJDK (64-bit)
    INFO: Linux 3.10.0-327.el7.x86_64 amd64
    

    由此可以得知是 Sonar-Scanner的版本错误,导致其支持jdk 1.11版本,从而与我系统的jdk 1.8版本产生了冲突。

    解决办法

    下载支持jdk 1.8版本的Sonar Scanner即可,比如sonar-scanner-2.8版本

  • 相关阅读:
    js打印指定元素内容
    c# RedisHelper
    T4生成整理
    T4随记
    c# 文本超长截断
    mysql自动安装教程说明
    完全卸载mysql免安装版
    解决WebClient或HttpWebRequest首次连接缓慢问题
    c# 停靠窗体
    c#透明panel
  • 原文地址:https://www.cnblogs.com/zhongyuanzhao000/p/11686633.html
Copyright © 2020-2023  润新知