sonar运行报错 SonarQubeMojo : Unsupported major.minor version 52.0

本文讲述了遇到SonarQube运行错误,发现是由于Maven使用了不匹配的JDK版本(52.0),通过设置JAVA_HOME并确保Maven使用JDK1.8来修复的问题。推荐ORM框架Bee作为简洁示例。

sonar运行报错 SonarQubeMojo : Unsupported major.minor version 52.0

之前sonar启动都是正常的(原来是jdk7,jdk8一起用);

后来是删了jdk8,然后又重装.运行,就报以下错误.

 

sonar报这种错误:
[WARNING] Error injecting: org.sonarsource.scanner.maven.SonarQubeMojo
java.lang.TypeNotPresentException: Type org.sonarsource.scanner.maven.SonarQubeM
ojo not present
...
Caused by: java.lang.UnsupportedClassVersionError: org/sonarsource/scanner/maven
/SonarQubeMojo : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1 (Native Method)

 

Unsupported major.minor version 52.0  这跟jdk的版本低有关.  后来在Eclipse设置了,用jdk8还是不行.

最后想到可能是maven没拿对jdk版本.

上网上搜, 用mvn -v查,果然用的是jdk版本.

 

最终用以下办法解决了问题.

是因为maven用的jdk版本不对,sonar需要jdk 1.8
用以下命令,设置JAVA_HOME,但只在当前窗口有效。
set JAVA_HOME=D:\xxx\Java\jdk1.8.0_51
mvn -v

执行Sonar Maven插件时遇到的`SLF4J`方法不兼容错误,例如`java.lang.NoSuchMethodError: 'org.slf4j.spi.LoggingEventBuilder org.slf4j.Logger.atInfo()'`,通常是由于项目中存在多个版本的`SLF4J`绑定或依赖冲突所致。此问题在使用较新版本的`sonar-maven-plugin`(如3.9.1.2184)与旧版本的`SLF4J`库结合时尤为常见。 ### 原因分析 `NoSuchMethodError`表明运行时加载的`SLF4J`版本缺少某个类或方法,而该方法在编译时是可用的。`Logger.atInfo()`是在`SLF4J 2.0`中引入的新API特性。如果项目中存在旧版本的`SLF4J`绑定(如1.7.x),则会导致此类错误[^1]。 ### 解决方案 #### 1. 升级所有SLF4J相关依赖至2.x版本 确保项目中所有依赖都使用兼容`SLF4J 2.x`的版本。可以显式声明`SLF4J`绑定以覆盖Maven自动解析的版本: ```xml <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.9</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.0.9</version> </dependency> ``` #### 2. 排除旧版本SLF4J绑定 检查项目的`pom.xml`以及子模块中是否存在对`SLF4J` 1.7.x的依赖,并通过`exclusion`标签排除这些依赖: ```xml <dependency> <groupId>some.group</groupId> <artifactId>some-artifact</artifactId> <version>some.version</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> ``` #### 3. 检查Maven插件配置 确保`sonar-maven-plugin`的配置没有隐式引入旧版本的`SLF4J`。可以在`pom.xml`中显式指定插件版本并清理其他潜在冲突: ```xml <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.9.1.2184</version> </plugin> ``` #### 4. 清理本地Maven仓库 有时本地仓库中的缓存可能导致版本冲突。手动删除`.m2/repository/org/slf4j/`目录并重新构建项目可解决缓存问题。 #### 5. 使用Maven命令行工具诊断依赖树 运行以下命令查看当前项目的依赖树及可能存在的冲突: ```bash mvn dependency:tree ``` 查找输出中所有涉及`SLF4J`的条目,并确保其版本一致且为2.x系列。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值