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
相关产品推荐
相关产品推荐

