Unable to load component class org.sonar.scanner.repository.ProjectRepositories 500

本文介绍了一个关于SonarQube Maven Plugin在执行项目扫描时遇到的问题及解决办法。主要错误为组件加载失败,导致项目构建无法完成。通过检查任务管理并移除重复任务解决了project冲突问题。

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:
sonar-maven-plugin:3.2:sonar (default-cli) on project mpms-pom: Unable to load component 
class org.sonar.api.config.Settings: Unable to load component class org.sonar.scanner.repository.ProjectRepositories: 
Error 500 on http://10.37.124.178:9000/batch/project.protobuf?key=com.suning.mpms%3Ampms-pom%3A2017.12.18 : 
{"errors":[{"msg":"An error has occurred. Please contact your administrator."}]} -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar (default-cli) on project mpms-pom: Unable to load component class org.sonar.api.config.Settings
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to load component class org.sonar.api.config.Settings
	at org.sonarsource.scanner.maven.bootstrap.ExceptionHandling.handle(ExceptionHandling.java:36)
	at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:81)
	at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:122)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
	... 19 more
Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.api.config.Settings
	at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69)
	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:678)
	at org.sonar.core.platform.ComponentContainer.getComponentByType(ComponentContainer.java:272)
	at org.sonar.scanner.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:114)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:140)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
	at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:47)
	at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:86)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
	at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:115)
	at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:116)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:62)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy16.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
	at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
	at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:78)
	... 22 more
Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.scanner.repository.ProjectRepositories
	at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69)

sonar 访问地址 :类似的函数还有printf(),调用的是wirte()系统调用来输出字符串
http://10.37.124.178:9000/batch/project.protobuf?key=com.mpms%3Ampms-pom%3A2017.12.18

返回的是 project.protobuf 文件

在setting-> 项目->Managerment后台查看 com.suning.mpms 任务信息,发现有两个重复的任务!重复导致 project 冲突,进行删除,再次构建。

### 问题分析 当使用 SonarQube Maven 插件版本 `5.1.0.4751` 时,可能会遇到如下错误信息: ``` Java runtime class file version 55.0 error ``` 此错误表明当前运行环境的 Java 版本与插件所支持的版本不兼容。具体来说,错误中的 `class file version 55.0` 对应的是 Java 11 的类文件版本(Java 类文件版本对应关系如下:Java 8 为 52.0、Java 9 为 53.0、Java 10 为 54.0、Java 11 为 55.0)[^1]。 SonarQube Maven 插件 `5.1.0.4751` 发布于 2020 年左右,其默认支持的 Java 版本为 Java 8,不支持 Java 11 或更高版本的类文件格式。因此,当使用 Java 11 或更高版本运行该插件时,会因无法识别类文件格式而抛出 `mojo` 加载失败错误。 ### 解决方案 #### 1. 使用兼容的 Java 版本运行插件 最直接的解决方案是使用 Java 8 运行 SonarQube Maven 插件。可以通过以下方式切换 Java 版本: - 在命令行中指定 Java 8 的路径执行 Maven: ```bash /path/to/java8/bin/java -jar /path/to/mvnw.jar sonar:sonar ``` - 或者在 CI/CD 环境中配置使用 Java 8 执行 SonarQube 分析任务。 #### 2. 升级 SonarQube Maven 插件版本 如果必须使用 Java 11 或更高版本,应升级 SonarQube Maven 插件至兼容版本。例如,SonarQube Maven 插件 `3.9.1.2184` 及以上版本支持 Java 11,`3.9.0.2157` 及以上版本也部分支持 Java 11。 更新 `pom.xml` 中插件版本: ```xml <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.9.1.2184</version> </plugin> ``` #### 3. 配置 `maven-compiler-plugin` 以兼容旧版本 若因项目结构限制无法升级插件版本,也可以尝试在 `pom.xml` 中配置 `maven-compiler-plugin`,强制使用 Java 8 编译项目: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> ``` 该方法可确保生成的 `.class` 文件版本为 52.0,与 SonarQube Maven 插件 `5.1.0.4751` 兼容。 #### 4. 使用 `--release` 参数编译(适用于 Java 9+) 如果使用 Java 9 或更高版本进行编译,可以利用 `--release` 参数强制生成 Java 8 兼容的类文件: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <release>8</release> </configuration> </plugin> ``` 该配置可确保即使使用 Java 11 编译,生成的 `.class` 文件仍为 Java 8 格式,避免 SonarQube 插件因类版本不兼容而失败。 --- ### 验证与测试 执行以下命令以验证插件是否正常运行: ```bash mvn clean install sonar:sonar ``` 检查构建日志,确保没有 `class file version` 错误或 `mojo` 加载失败提示。若构建成功且 SonarQube 项目页面显示分析结果,则说明问题已解决。 --- ### 注意事项 - 确保所有开发人员和 CI/CD 环境使用一致的 Java 版本,以避免版本不一致导致的构建失败。 - 若项目使用多模块结构,应确保所有模块的 `maven-compiler-plugin` 配置一致。 - 若插件版本升级后仍存在问题,可查阅 SonarQube 官方文档获取兼容性矩阵,确认插件与服务器版本是否匹配。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值