运行sonar-scanner遇java.lang.NoClassDefFoundError错误求助
解决Sonar-Scanner运行时的NoClassDefFoundError问题
你遇到的java.lang.NoClassDefFoundError: org/sonar/batch/bootstrapper/LogOutput$Level错误,大概率是SonarQube Scanner版本与SonarQube服务器版本不兼容导致的。从你提供的调试日志来看,当前使用的是SonarQube Scanner 3.1.0.1141,这个版本比较老旧,通常只兼容SonarQube 6.x系列的服务器;如果你的SonarQube服务器是7.x及以上版本,就会出现这类类找不到的问题。
下面是具体的解决步骤:
1. 确认版本兼容性
首先登录你的SonarQube服务器网页,在页面底部查看服务器的版本号。然后确保SonarQube Scanner版本和服务器版本匹配:
- Scanner 3.x → 对应SonarQube 6.x
- Scanner 4.x → 对应SonarQube 7.9+
- Scanner 5.x+ → 对应SonarQube 8.9+及更高版本
2. 升级SonarQube Scanner到兼容版本
因为你是用Homebrew安装的Scanner,执行以下操作:
- 先卸载当前旧版本:
brew uninstall sonar-scanner - 安装匹配服务器版本的Scanner,如果需要最新稳定版,直接执行:
如果需要指定特定版本,可以用Homebrew的版本安装命令(比如brew install sonar-scannerbrew install sonar-scanner@4.7,具体版本号根据兼容性选择)
3. 验证配置和环境
- 检查Scanner的配置文件
/usr/local/Cellar/sonar-scanner/[新版本号]/libexec/conf/sonar-scanner.properties,确保sonar.host.url正确指向你的SonarQube服务器地址 - 确认Java版本符合要求:新版本的Scanner(比如4.x+)需要Java 11或更高版本,你当前用的是Java 8,如果升级Scanner后需要对应升级Java环境
附上你执行sonar-scanner -X的日志:
19:49:25.192 INFO: 扫描器配置文件:/usr/local/Cellar/sonar-scanner/3.1.0.1141/libexec/conf/sonar-scanner.properties 19:49:25.211 INFO: SonarQube Scanner 3.1.0.1141 19:49:25.212 INFO: Java 1.8.0_131 Oracle Corporation(64位) 19:49:25.212 INFO: Mac OS X 10.13 x86_64 19:49:25.363 DEBUG: keyStore 为: 19:49:25.363 DEBUG: keyStore 类型为:jks 19:49:25.363 DEBUG: keyStore 提供方为: 19:49:25.589 DEBUG: 创建独立类加载器... 19:49:25.597 DEBUG: 启动临时类加载器...
内容的提问来源于stack exchange,提问作者annu
相关产品推荐
相关产品推荐

