sonarRunner java.lang.OutOfMemoryError:PermGen的空间(

2019-09-26 23:59发布

环境:
1. Linux的
2.摇篮1.6 / 7
3.语言 - Java的

gradle这个干净的构建jacocoTestReport - 做工精细。

近日,然后SonarQube安装在提供的文件: http://docs.sonarqube.org/display/SONAR/Running+SonarQube+as+a+Service+on+Linux (声纳开始,声纳状态,声纳站等).. .commands将在这一点上工作。

更改gradle这个构建脚本累计。 到摇篮SonarRunner帮助页面在: http://www.gradle.org/docs/current/userguide/sonar_runner_plugin.html

当运行sonarRunner任务-我得到以下错误:

:sonarRunner
18:56:03.997 INFO  - Load batch settings
18:56:04.140 INFO  - User cache: /production/c123456/jenkins/.sonar/cache
18:56:04.146 INFO  - Install plugins
18:56:04.851 INFO  - Install JDBC driver
18:56:04.858 WARN  - H2 database should be used for evaluation purpose only
18:56:04.858 INFO  - Create JDBC datasource for jdbc:h2:tcp://devserver11.tr.company.com:9092/sonar
18:56:05.870 INFO  - Initializing Hibernate
:sonarRunner FAILED
java.lang.OutOfMemoryError: PermGen space
> Building-bash-3.2$

声纳/ conf目录/ sonar.properties - - 在/生产/ c123456 /声纳即安装声纳一切看起来是正确的 - 声纳/ conf目录/ wrapper.properties - 包含有效值JAVA即选择采用

# Java Additional Parameters
wrapper.java.additional.1=-Djava.awt.headless=true
wrapper.java.additional.2=-XX:MaxPermSize=1024m
wrapper.java.additional.3=-XX:+HeapDumpOnOutOfMemoryError
wrapper.java.additional.4=-XX:+CMSClassUnloadingEnabled
wrapper.java.additional.5=-XX:+UseConcMarkSweepGC

# RECOMMENDED : uncomment if Java Virtual Machine is a JDK but not a JRE. To know which JVM you use, execute
# 'java -version'. JDK displays 'Server VM'.
wrapper.java.additional.4=-server

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=512

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=1024
  1. 谁能帮我可能会错过得到这个错误信息- PermGen的空间问题, 注意 :这是从一个Linux机器上发生的事情,所以我尝试过其他的Linux机器上安装声纳,还是得到了相同的错误消息。

  2. 我在我自己的本地Windows机器上安装SonarQube /亚军和指出的build.gradle sonarRunner部分与端口使用主机URL作为我的本地机器/主机URL我的机器名(FQDN)(9000)等,并同为JDBC H2 TCP方式。

    在运行“gradle这个干净的构建jacocoTestReport sonarRunner”,它通过上面的错误,但给了我另外一个陌生的一个。 C:\工作是我的工作区,我已签出的项目:Project_A_Svc(服务项目 - Java源代码)。

    :sonarRunner失败

    故障:建立失败,一个例外。

    • 出了什么问题:执行失败的任务“:sonarRunner”。

      org.sonar.runner.RunnerException:文件夹 'C:\工作\ Project_A_Svc \ SRC \主\ java的' 不为 'project_a_svc:project_a_svc' 存在项目(基本目录= C:\工作\ Project_A_Svc)

    • 试试看:--stacktrace选项获取堆栈跟踪运行。 与--info或--debug选项来运行,以获得更多的日志输出。

    构建失败

    总时间:38.124秒

为什么摇篮正试图寻找“的src / main / java的”当我的源代码甚至没有该文件夹结构。 摇篮默认结构是用“的src / main / java的” Java源代码的位置,但我的build.gradle确实有,我刚才提到找java源位置sourceSets部分。 我曾尝试多种方式来设定源迪尔斯对SRC的Java /测试,但它仍然试图寻找“的src / main / java目录”。

的build.gradle snapshost

apply plugin: 'java'
apply plugin: 'sonar-runner'

   main {
      java {
         srcDir 'src/java'
      }
   }
   test {
      java {
         srcDir 'test/java'
      }
   }
   integrationTest {
      java {
         srcDir 'src/java-test'
      }
   }
}

的build.gradle内sonarRunner部分是:

def sonarServerUrl = "devserver11.tr.company.com"
sonarRunner {
   sonarProperties {
      property "sonar.host.url", "http://$sonarServerUrl:9000"
  // these are default settings for the in-memory database.  Change if using a persistent DB.
  property "sonar.jdbc.url", "jdbc:h2:tcp://$sonarServerUrl:9092/sonar"
  property "sonar.jdbc.driverClassName", "org.h2.Driver"
  property "sonar.jdbc.username", "sonar"
  property "sonar.jdbc.password", "sonar"

  //properties ["sonar.sources"] += sourceSets.main.java.srcDirs
  //properties ["sonar.tests"] += sourceSets.test.java.srcDirs
  //----
  properties["sonar.sources"] = "src/java"
  properties["sonar.tests"] = "test/java"

   }
}

任何帮助吗? 非常感谢。

Answer 1:

我得到了一些进展。

脚步

  1. 没有改变声纳/ conf目录/ sonar.properties,wrapper.properties,声纳亚军/ conf目录/ sonar-runner.properties什么。 确信主机URL值在sonar.properties和sonar-runner.properties相同。

  2. 转至工作空间(在安装了源代码)。

  3. 声纳亚军 (可执行文件) -它会显示路径/文件它给了我需要sonar-project.properties因为我错过了通过声纳所需的一些变量中的错误。

    使用的链接

  4. 发现SCM供应商未设置。 使用的链接: http://jira.codehaus.org/browse/ACT-1714解决它。

  5. 再次运行声纳亚军,会开得不错。 (注:此命令比运行sonarRunner因为这是摇篮的声纳亚军任务不同)。

  6. 去SonarQube仪表板和有现在显示的东西。

PENDING明天:

  1. 要在Linux命令行,并从詹金斯以下(作业的Gradle调用任务)。 gradle这个干净的构建jacocoTestReport sonarRunner

更新:

  • 试图运行:

摇篮干净的构建jacocoTestReport - 工程

gradle这个干净的构建jacocoTestReport sonarRunner - 未说的src / main / java中不存在

gradle这个干净的构建jacocoTestReport sonarRunner -Dsonar.sources = SRC / JAVA - 工作

gradle这个清理生成jacocoTestReport sonarRunner -Dsonar.sources = “SRC / JAVA,测试/ java中,SRC / java的测试” - DID没有工作(PermGen的Java错误)

gradle这个清理生成jacocoTestReport sonarRunner -Dsonar.sources = “SRC / JAVA” - DID没有工作(PermGen的Java错误)

gradle这个清理生成jacocoTestReport sonarRunner -Dsonar.sources = SRC / JAVA - DID没有工作(PermGen的Java错误)

gradle这个sonarRunner -Dsonar.sources = SRC / java中,测试/ JAVA,SRC / java的试验 - DID没有工作(错误字符集是不能读取或导入 - 字符集UTF-8或任何我最终设定sonar.sourceEncoding )

gradle这个CLEA构建jacocoTestReport -工作

然后

gradle这个sonarRunner -Dsonar.sources = “SRC / JAVA” -工作

我曾尝试在声纳/ conf目录/ wrapper.properties设置MaxPernGen像128,512,1024,2048,...高达8000米......没有解决下面的错误工作的各种价值观 - 而运行的所有gradle这个任务在一个命令。

:sonarRunner FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':sonarRunner'.
> java.lang.OutOfMemoryError: PermGen space

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

不知道为什么,我只要我跑收到此错误:

:gradle这个干净的构建jacocoTestReport sonarRunner”




OK -得到了PermGen的内存问题解决。

步骤 :1。在我的〜/ .bashrc或者〜/ .bash_profile。 我创建了以下变量

GRADLE_OPTS=” -XX:MaxPermSize=512m"
  1. 运行“这gradle这个”或基本上找到哪个文件的gradle(壳或.bat)被使用。 进入这条道路,并打开“gradle这个” /“gradle.bat”(适用于Windows)文件。

  2. 做以下修改。

     DEFAULT_JVM_OPTS="$JAVA_OPTS $GRADLE_OPTS" 
  3. 做 “在〜/ .bash_profile” 或 “〜/ .bashrc中” ...... --OR打开一个新的PuTTY会话。

  4. 确保PATH变量中有gradle这个HOME /箱(Linux / Windows的)

  5. 运行以下命令(这一次没有显示PermGen的错误,我早点起床)从工作区:

    gradle这个干净的构建jacocoTestReport sonarRunner

    :)时间今天早点回家。

  6. 其他类似的变量是:GRADLE_OPTS / JAVA_OPTS / SONAR_RUNNER_OPTS(其中-XX:最大..值可以被设置)在服务器(腻子会话级)或在集成开发环境或詹金斯。

感谢阿林的提示。



Answer 2:

如果您使用的摇篮包装,你可以有指定GRADLE_OPTS,这应该对詹金斯正常工作。



文章来源: sonarRunner java.lang.OutOfMemoryError: PermGen space