You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TeamCity集成SonarQube Scanner遇版本兼容错误求助

问题

尝试在TeamCity构建配置中集成SonarQube Scanner,已完成以下操作:

  • 安装Sonar Runner插件
  • 构建步骤设置使用scanner版本4.2.0并启用执行
  • 使用JetBrains提供的Sonar Runner版本2020.1-12

构建执行到该步骤时失败,报错信息如下:

ERROR: Error during SonarQube Scanner execution
11:57:05   INFO: Final Memory: 5M/245M
11:57:05   INFO: ------------------------------------------------------------------------
11:57:05   java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
11:57:05     at java.lang.ClassLoader.defineClass1(Native Method)
11:57:05     at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
11:57:05     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
11:57:05     at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
11:57:05     at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
11:57:05     at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
11:57:05     at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
11:57:05     at java.security.AccessController.doPrivileged(Native Method)
11:57:05     at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
11:57:05     at org.sonarsource.scanner.api.internal.IsolatedClassloader.loadClass(IsolatedClassloader.java:82)
11:57:05     at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
11:57:05     at org.sonarsource.scanner.api.internal.batch.DefaultBatchFactory.createBatch(DefaultBatchFactory.java:32)
11:57:05     at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
11:57:05     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11:57:05     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
11:57:05     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
11:57:05     at java.lang.reflect.Method.invoke(Method.java:498)
11:57:05     at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
11:57:05     at com.sun.proxy.$Proxy0.execute(Unknown Source)
11:57:05     at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
11:57:05     at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
11:57:05     at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
11:57:05     at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
11:57:05     at org.sonarsource.scanner.cli.Main.main(Main.java:61)
11:57:05   ERROR:

已确认TeamCity服务器运行JRE v23.0.2:

java version "23.0.2" 2025-01-21
Java(TM) SE Runtime Environment (build 23.0.2+7-58)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.2+7-58, mixed mode, sharing)

该版本支持最高v67的类文件,请问遗漏了什么配置或细节?

解决方案

核心原因

报错中的class file version 61.0对应Java 17,up to 52.0对应Java 8。这说明执行Sonar Scanner步骤的JVM是Java 8,而非你检查的TeamCity服务器的Java 23。TeamCity服务器与构建代理使用的JDK相互独立,构建步骤实际由代理执行。

排查与修复步骤

  • 检查构建代理的JDK版本:登录TeamCity进入Agents页面,找到执行该构建的代理,查看其Java Runtime信息,确认是否为Java 8。如果是,需为代理配置Java 17及以上版本的JDK。
  • 为Sonar Scanner步骤指定正确JDK:在构建配置的Sonar Runner步骤中,JDK选项选择已配置的Java 17+版本(需先在Administration > Tools > JDKs中添加对应版本),避免依赖代理默认JDK。
  • 验证Sonar Runner版本兼容性:你使用的2020.1-12版本发布时间较早,可能与SonarQube Scanner 4.2.0不兼容。Scanner 4.2.0要求Java 11+运行环境,建议升级JetBrains Sonar Runner插件到最新版本,或确认插件与Scanner的兼容关系。
  • 检查SonarQube服务器Java版本:SonarQube服务器本身也需要Java 11+运行,确保其JDK版本符合要求,避免后续其他兼容性问题。

内容的提问来源于stack exchange,提问作者spikey_richie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 06:17:12