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

使用ADO Task v6执行Sonar扫描失败,请求排查

ADO SonarQube Task v6扫描失败,v5正常:归档提取错误

问题描述

使用最新版ADO SonarQube Task v6执行代码扫描时失败,但切换回v5版本可正常运行。核心错误表现为提取SonarQube服务器提供的JRE归档时,找不到指定的classes.jsa文件。

错误日志

/azp/_work/_tasks/SonarQubeAnalyze_6d01813a-9589-4b15-8491-8164aeb38055/6.3.2/sonar-scanner/bin/sonar-scanner
11:25:43.109 INFO  Scanner configuration file: /azp/_work/_tasks/SonarQubeAnalyze_6d01813a-9589-4b15-8491-8164aeb38055/6.3.2/sonar-scanner/conf/sonar-scanner.properties
11:25:43.116 INFO  Project root configuration file: NONE
11:25:43.147 INFO  SonarScanner CLI 6.1.0.4477
11:25:43.149 INFO  Java 17.0.12 Ubuntu (64-bit)
11:25:43.150 INFO  Linux 5.4.0-189-generic amd64
11:25:43.160 DEBUG Scanner max available memory: 15 GB
11:25:43.200 DEBUG uname -m returned 'x86_64'
11:25:43.202 DEBUG Create: /home/agent/.sonar/cache
11:25:43.203 INFO  User cache: /home/agent/.sonar/cache
11:25:43.204 DEBUG Create: /home/agent/.sonar/cache/_tmp
11:25:43.553 DEBUG Loaded [415] system trusted certificates
11:25:43.828 DEBUG --> GET https://sonarprod.cloud.aero/api/v2/analysis/version
11:25:44.010 DEBUG <-- 200 https://sonarprod.cloud.aero/api/v2/analysis/version (182ms, 12-byte body)
11:25:44.013 INFO  JRE provisioning: os[linux], arch[x86_64]
11:25:44.017 DEBUG --> GET https://sonarprod.cloud.aero/api/v2/analysis/jres?os=linux&arch=x86_64
11:25:44.025 DEBUG <-- 200 https://sonarprod.cloud.aero/api/v2/analysis/jres?os=linux&arch=x86_64 (8ms, unknown-length body)
11:25:44.926 INFO  EXECUTION FAILURE
11:25:44.927 INFO  Total time: 1.870s
##[error]11:25:44.928 ERROR Error during SonarScanner CLI execution
java.lang.IllegalStateException: Failed to extract archive
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.extractArchive(JavaRunnerFactory.java:200)
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.getJreFromServer(JavaRunnerFactory.java:145)
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.createRunner(JavaRunnerFactory.java:85)
    at org.sonarsource.scanner.lib.internal.ScannerEngineLauncherFactory.createLauncher(ScannerEngineLauncherFactory.java:53)
    at org.sonarsource.scanner.lib.ScannerEngineBootstrapper.bootstrap(ScannerEngineBootstrapper.java:118)
    at org.sonarsource.scanner.cli.Main.analyze(Main.java:75)
    at org.sonarsource.scanner.cli.Main.main(Main.java:63)
Caused by: java.nio.file.NoSuchFileException: /home/agent/.sonar/cache/bcb1b7b8ad68c93093f09b591b7cb17161d39891f7d29d33a586f5a328603707/jre8181025238927046063/jdk-17.0.11+9-jre/lib/server/classes.jsa

错误原因分析

Task v6新增了JRE自动预配功能,会从SonarQube服务器下载对应操作系统/架构的JRE并缓存到Agent本地。但缓存目录中的JRE归档可能损坏,或提取过程中文件丢失,导致扫描时找不到classes.jsa文件。

解决方案

1. 清理Agent本地Sonar缓存

直接删除Agent上的Sonar缓存目录,让Task重新下载完整的JRE归档:

rm -rf /home/agent/.sonar/cache

下次运行Task v6时,会重新从SonarQube服务器下载并提取JRE,避免损坏的缓存文件影响扫描。

2. 禁用JRE自动预配(强制使用Agent本地Java)

如果不想依赖SonarQube服务器提供的JRE,可以在ADO Task配置中添加参数,强制使用Agent已安装的Java版本:

  • 编辑SonarQube Analyze Task的配置
  • 在Additional Scanner Arguments中添加:
    sonar.scanner.javaHome=/path/to/your/local/java
    
    替换/path/to/your/local/java为Agent上已安装的Java路径(例如/usr/lib/jvm/java-17-openjdk-amd64)

3. 检查SonarQube服务器JRE包完整性

如果多个Agent都出现此问题,可能是SonarQube服务器上存储的JRE包本身损坏。可登录SonarQube服务器,检查对应JRE归档文件的MD5或SHA校验值,确保文件未损坏。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:57:26