是否可以在 64 位系统 CentOS 上运行 Sonar?
Posted
技术标签:
【中文标题】是否可以在 64 位系统 CentOS 上运行 Sonar?【英文标题】:Is it possible to run Sonar on 64-bit system, CentOS? 【发布时间】:2012-09-17 13:45:22 【问题描述】:我刚刚在 CentOS 上安装了 Sonar 3.2(uname -a = Linux mydomain.com 3.2.20-1.29.6.amzn1.x86_64)。我使用的是 64 位版本的 Java……
$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.3) (amazon-52.1.11.3.45.amzn1-x86_64)
我想将 Sonar 安装为 Jenkins(构建集成服务器)的一部分,但在尝试运行它时,它反复死机并出现“Java 运行时环境检测到致命错误”错误。我说不出具体原因。 Sonar 是否使用 64 位 JVM 运行?我该如何进一步解决这个问题?
下面是我运行的命令和我得到的最终错误......
[myuser@mydomain workspace]$ sudo /usr/local/apache-maven/apache-maven-3.0.4/bin/mvn -f "/var/lib/jenkins/jobs/Sales Client/workspace/pom.xml" -e -B sonar:sonar -Dsonar.jdbc.driver=com.mysql.jdbc.Driver -Dsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar -Dsonar.host.url=http://localhost:9000
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.mainco.subco:myclient:war:1.0
[WARNING] 'dependencies.dependency.systemPath' for quickbase:quickbase:jar should not point at files within the project directory, $project.basedir/src/main/webapp/WEB-INF/lib/quickbase.jar will be unresolvable by dependent projects @ line 75, column 16
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myclient 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- sonar-maven-plugin:2.0:sonar (default-cli) @ myclient ---
[INFO] Sonar version: 3.2
[INFO] [14:43:11.995] Create JDBC datasource to url jdbc:mysql://localhost:3306/sonar
[INFO] [14:43:14.081] Initializing Hibernate
[INFO] [14:43:18.186] ------------- Analyzing myclient
[INFO] [14:43:19.142] Selected quality profile : [name=Sonar way,language=java]
[INFO] [14:43:19.409] Configure maven plugins...
[INFO] [14:43:19.598] Compare to previous analysis (2012-09-14)
[INFO] [14:43:19.680] Compare over 5 days (2012-09-09, analysis of 2012-09-14 11:35:22.0)
[INFO] [14:43:19.719] Compare over 30 days (2012-08-15, analysis of 2012-09-14 11:35:22.0)
[INFO] [14:43:19.857] Deleting /var/lib/jenkins/jobs/Sales Client/workspace/target/jacoco.exec
[INFO] [14:43:20.042] JaCoCo agent (version 0.5.8.201207111220) extracted: /tmp/jacocoagent5605291050104287245.jar
[INFO] [14:43:20.043] JVM options: -javaagent:/tmp/jacocoagent5605291050104287245.jar=destfile=target/jacoco.exec,excludes=*_javassist_*
[INFO] [14:43:20.072] Initializer FindbugsMavenInitializer...
[INFO] [14:43:20.078] Initializer FindbugsMavenInitializer done: 6 ms
[INFO] [14:43:20.078] Execute maven plugin maven-surefire-plugin...
[INFO] [14:43:20.078] Execute org.apache.maven.plugins:maven-surefire-plugin:2.10:test...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myclient 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-cli) @ myclient ---
[INFO] Surefire report directory: /var/lib/jenkins/jobs/Sales Client/workspace/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.mainco.subco.Sales.ProcessOrdersWorkerTest
0 [main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Log4jLoggerProvider
182 [main] DEBUG org.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BooleanType@789934d4
183 [main] DEBUG org.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BooleanType@789934d4
...
8428 [main] DEBUG org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory - Setting dialect [org.hibernate.dialect.HSQLDialect]
8428 [main] DEBUG org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory - Setting dialect [org.hibernate.dialect.HSQLDialect]
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f65ec8627e7, pid=8357, tid=140075590440704
#
# JRE version: 6.0_31-b04
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.6-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V [libjvm.so+0x7a27e7] ContiguousSpace::prepare_for_compaction(CompactPoint*)+0x227
#
# An error report file with more information is saved as:
# /var/lib/jenkins/jobs/Sales Client/workspace/hs_err_pid8357.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
/bin/sh: line 1: 8357 Aborted /usr/java/jdk1.6.0_31/jre/bin/java '-javaagent:/tmp/jacocoagent5605291050104287245.jar=destfile=target/jacoco.exec,excludes=*_javassist_*' -jar '/var/lib/jenkins/jobs/Sales Client/workspace/target/surefire/surefirebooter9057179906457468987.jar' '/var/lib/jenkins/jobs/Sales Client/workspace/target/surefire/surefire9129544007090882593tmp' '/var/lib/jenkins/jobs/Sales Client/workspace/target/surefire/surefire1194130731343095454tmp'
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
【问题讨论】:
是的,它在 Centos/Redhat 64 位中运行良好。我家有一台服务器运行声纳和詹金斯没有任何问题。它可能是您正在使用的 centos/java 版本的混合。您可以尝试将您的 JDK 更新到最新版本吗? 请注意,用于运行 maven 的 JDK (/usr/java/jdk1.6.0_31) 与which
命令 (openjdk 1.6.0_24) 显示的不同
我的 $JAVA_HOME 环境变量设置为“1.6.0_24”,那么 Sonar 在哪里寻找它正在运行的 Java 版本?
【参考方案1】:
我想这是由SONAR-3701 引起的。
【讨论】:
这是真的。升级到 Sonar 3.2.1 解决了这个问题。【参考方案2】:这对我有用,在这台机器上同时运行 Sonar 和 Jenkins:
$ unname -a Linux HOSTNAME 2.6.18-274.12.1.el5 #1 SMP Tue Nov 29 13:37:46 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
$ java -版本 java版本“1.6.0_20” OpenJDK 运行时环境 (IcedTea6 1.9.10) (rhel-1.23.1.9.10.el5_7-x86_64) OpenJDK 64 位服务器 VM(内部版本 19.0-b09,混合模式)
我们运行的是 ant 构建,而不是 maven。我们将测试和覆盖率作为 ant 目标运行,并将声纳作为单独的目标加载,而不是尝试通过声纳运行测试。
【讨论】:
好的,谢谢。如果有的话,你为 JAVA_OPTS 设置了什么? 没有全局性,不同的项目在 Makefile 或 build.xml 中设置了 java 选项。我们是一家混合语言商店,并且有一些混合语言的应用程序,通常将 java 添加到 c++ 环境中。所以一个 Makefile 可以构建 c++ 并触发 ant 来构建 java。选项根据正在构建的需求而有所不同。以上是关于是否可以在 64 位系统 CentOS 上运行 Sonar?的主要内容,如果未能解决你的问题,请参考以下文章