我已经在本地安装了声纳,以便在我的java项目代码上运行它。我的这段代码使用的是java 8。我的环境变量也设置为java 8,但我已经在我的机器上安装了Java 11,并在我的机器中设置了一个指向java 11的环境变量SONAR_JAVA_PATH。这是我的环境变量。
export SONAR_HOME=/opt/homebrew/Cellar/sonar-scanner/4.7.0.2747/libexec
export SONAR=$SONAR_HOME/bin
export PATH=$SONAR:$PATH
export SONAR_JAVA_PATH=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/bin/java
export PATH=$SONAR_JAVA_PATH:$PATH
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
export PATH=${JAVA_HOME}/bin:${PATH}
export PATH
当我在根目录中运行以下命令时
mvn clean verify sonar:sonar \
-Dsonar.projectKey=tirebattery-orderprocessing-svcs \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=sqp_17296fe6fac85ebd5f0c0f0490b78216b5ea7140
它抛出以下错误
执行goal的default-cli org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:sonar 失败:执行时遇到 API 不兼容问题 org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184:声纳: java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation 已编译 通过更新版本的 Java 运行时(类文件版本 55.0),此版本的 Java 运行时仅识别 52.0 以下的类文件版本
我对这个错误感到非常困惑。在我的 IntelliJ 中,如何在 Java 8 中构建代码并在 java 11 上运行声纳?在之前的几个答案中,我红色编辑wrapper.conf文件,但在MAC中,通过Brew安装声纳后没有创建这样的文件。 任何人都可以用简单的语言向我解释为什么会出现此问题,根本原因是什么以及我必须对 POM 进行哪些更改才能解决此问题。这是我的 POM.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
<groupId>com.sams.clubops.orderprocessing</groupId>
<artifactId>tbcorderprocessing</artifactId>
<version>1.8.3</version>
<packaging>jar</packaging>
<name>tbcorderprocessing</name>
<description>Purchase order processing services</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<azure.version>2.0.5</azure.version>
<java.version>1.8</java.version>
<camel.version>2.20.1</camel.version>
<spring.boot.version>2.7.2</spring.boot.version>
<swagger2.version>2.9.2</swagger2.version>
<tbc-common.version>1.8.4-SNAPSHOT</tbc-common.version>
</properties>
<distributionManagement>
<repository>
<id>pangaea_releases</id>
<name>xyz Releases</name>
<url>http://gec-maven-nexus.xyz.com/nexus/content/repositories/pangaea_releases</url>
</repository>
<snapshotRepository>
<id>pangaea_snapshots</id>
<name>xyz Snapshots</name>
<url>http://gec-maven-nexus.xyz.com/nexus/content/repositories/pangaea_snapshots</url>
</snapshotRepository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-spring-data-cosmos</artifactId>
<version>3.25.0</version>
</dependency>
<!-- Added for SQL Server Connection 12/07 -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry -->
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>1.2.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sams.event.horizon</groupId>
<artifactId>evclient</artifactId>
<version>0.0.60</version>
<exclusions>
<exclusion>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger2.version}</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger2.version}</version>
<scope>compile</scope>
</dependency>
<!--TBC Commons dependency-->
<dependency>
<groupId>com.sams.clubops.tbc</groupId>
<artifactId>tbc-common</artifactId>
<version>${tbc-common.version}</version>
</dependency>
<!-- EVENT HUB EVENT PROCESSOR-->
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-eventhubs</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-eventhubs-eph</artifactId>
<version>3.0.2</version>
<exclusions>
<exclusion>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-servicebus</artifactId>
<version>1.2.11</version>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-logback</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.sams.mth</groupId>
<artifactId>common</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-keyvault-secrets-spring-boot-starter</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>3.8.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target</outputDirectory>
<resources>
<resource>
<directory>src/main/resources/docker</directory>
<includes>
<include>Dockerfile</include>
<include>sshd_config</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/docker</directory>
<includes>
<include>startup.sh</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/docker</directory>
<includes>
<include>proxy-intranet-ref-app.conf</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/keystore</directory>
<includes>
<include>stage-extes-replenishment.crt</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/docker</directory>
<includes>
<include>stage-event-horizon-eus.cld.samsclub.com.cer</include>
<include>stage-event-horizon-wus.cld.samsclub.com.cer</include>
<include>stage-event-horizon-station.cld.samsclub.com.cer</include>
<include>event-horizon-eus.cld.samsclub.com.cer</include>
<include>event-horizon-wus.cld.samsclub.com.cer</include>
<include>event-horizon-station.cld.samsclub.com.cer</include>
<include>stage-extes-replenishment.wal-mart.com.cer</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.coveo</groupId>
<artifactId>fmt-maven-plugin</artifactId>
<version>2.9</version>
<configuration>
<displayLimit>10</displayLimit>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.7.201606060606</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>jacoco-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<excludes>
<exclude>com/sams/clubops/orderprocessing/object/**/*</exclude>
<exclude>com/sams/clubops/orderprocessing/repository/document/*</exclude>
<exclude>**/*EventConsumerManager.class</exclude>
<exclude>**/*EventProcessHostObjFactory.class</exclude>
<exclude>**/*DotComOrdersPoLogRepo.class</exclude>
<exclude>**/*OrderProcessingCosmosConfig.class</exclude>
</excludes>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<!--CHange it back to 80-->
<minimum>0.83</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<testFailureIgnore>false</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
Java 用于运行 SonarScanner - SonarQube 8.9 中运行 Java 8,SonarQube 9.0 及更高版本中运行 Java 11
将 JDK 升级到 JDK11 或将 SonarQube 降级到 8.9
SonarQube 9.8 已停止支持 Java 8 版本的 Scanner 工具 3.9.1。所以需要使用SonarQube 8.9或以下版本进行分析。或者您可以参考以下内容,但可能仍然无法使用新的扫描仪工具版本:
mvn sonar:sonar
-Dsonar.login=xxxxxxxxxxxxx
-Dsonar.host.url=http://localhost:9001/sonarqube 1
-Dsonar.java.jdkHome=/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home
参考来源:https://community.sonarsource.com/t/java-versions-in-sonarqube/67551
因此,就我而言,我刚刚另外安装了 java 11 并将 JAVA_HOME 设置为 java 11 只是为了声纳步骤。
JAVA_HOME=/etc/alternatives/java_sdk_11/ && export JAVA_HOME && mvn -X sonar:sonar -DskipTests=true