gpt4 book ai didi

java - sonarRunner java.lang.OutOfMemoryError : PermGen space

转载 作者:行者123 更新时间:2023-11-30 04:15:34 25 4
gpt4 key购买 nike

环境:
1.Linux
2. Gradle 1.6/7
3.语言-Java

gradle clean build jacocoTestReport - 工作正常。

最近遵循 SonarQube 安装提供的文档: 奥 git _a( Sonar 启动、 Sonar 状态、 Sonar 停止等)...命令将在此时起作用。

根据 gradle 构建脚本进行了更改。转到 Gradle SonarRunner 帮助页面: http://docs.sonarqube.org/display/SONAR/Running+SonarQube+as+a+Service+on+Linux

运行 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$

Sonar 安装在/product/c123456/sonar,即- sonar/conf/sonar.properties - 一切看起来都是正确的- sonar/conf/wrapper.properties - 包含 JAVA opts 的有效值,即

# 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 上安装 Sonar 机器,仍然收到相同的错误消息。

  2. 我在自己的本地 Windows 计算机上安装了 SonarQube/Runner,并指出 build.gradle sonarRunner 部分使用主机 url 作为我的本地计算机/主机 url 我的计算机名称 (fqdn) 和端口 (:9000) 等,并且相同对于jdbc h2 tcp方式。

    运行“gradle clean build jacocoTestReport sonarRunner”时,它通过了上述错误,但给了我另一个奇怪的错误。 C:\work 是我的工作区,我在其中 checkout 了项目:Project_A_Svc(服务项目 - Java 源代码)。

    :sonarRunner 失败

    失败:构建因异常而失败。

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

      org.sonar.runner.RunnerException: The folder 'C:\work\Project_A_Svc\src\main\java' does not exist for 'project_a_svc:project_a_svc' project (base directory = C:\work\Project_A_Svc)

    • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。

    构建失败

    总时间:38.124秒

为什么 Gradle 试图寻找“src/main/java”,而我的源代码甚至没有该文件夹结构。 Gradle 默认结构是使用“src/main/java”作为 java 源代码位置,但我的 build.gradle 确实有 sourceSets 部分,我在其中提到了查找 java 源代码的位置。我尝试了多种方法来设置 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"

}
}

有什么帮助吗?非常感谢。

最佳答案

我取得了一些进展。

步骤

  1. 没有更改 sonar/conf/sonar.properties、wrapper.properties、sonar-runner/conf/sonar-runner.properties 中的任何内容。确保 sonar.properties 和 sonar-runner.properties 中的主机 url 值相同。

  2. 转到工作区(已安装源代码的位置)。

  3. sonar-runner(可执行文件)-它将显示路径/文件它给出了我需要 sonar-project.properties 的错误,因为我缺少一些所需的变量通过 Sonar 。

    使用link

  4. 发现 SCM 提供程序未设置。使用链接:http://jira.codehaus.org/browse/ACT-1714来解决它。

  5. 再次运行sonar-runner,一切顺利。 (注意:此命令与运行 sonarRunner 不同,因为那是 Gradle 的 Sonar 运行器任务)。

  6. 转到 SonarQube 仪表板,现在显示一些内容。

明天待定:

  • 在 Linux 命令行和 Jenkins 中执行以下操作(调用 gradle 任务的作业)。gradle clean build jacocoTestReport sonarRunner
  • 更新:

    • 尝试运行:

    gradle clean 构建 jacocoTestReport - 有效

    gradle clean build jacocoTestReport sonarRunner - 失败说 src/main/java 不存在

    gradle clean build jacocoTestReport sonarRunner -Dsonar.sources=src/java -- 已工作

    gradle clean build jacocoTestReport sonarRunner -Dsonar.sources="src/java,test/java,src/java-test"-- 没有工作(PermGen java错误)

    gradle clean build jacocoTestReport sonarRunner -Dsonar.sources="src/java"-- 没有工作(PermGen java错误)

    gradle clean build jacocoTestReport sonarRunner -Dsonar.sources=src/java -- 没有工作(PermGen java错误)

    gradle sonarRunner -Dsonar.sources=src/java,test/java,src/java-test -- 不起作用(错误是字符集无法读取或导入 - 字符集 UTF-8 或我最终设置的任何内容 Sonar .sourceEncoding)

    gradle clea build jacocoTestReport -- 已工作

    然后

    gradle sonarRunner -Dsonar.sources="src/java" -- 已工作

    我尝试将 sonar/conf/wrapper.properties 中的 MaxPernGen 设置为各种值,例如 128、512、1024、2048,...高达 8000m ...在运行所有 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 clean 构建 jacocoTestReport sonarRunner"




    确定 - 永久代内存问题已解决。

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

    GRADLE_OPTS=” -XX:MaxPermSize=512m"
  • 运行“which gradle”或基本上查找使用了哪个 gradle 文件(shell 或 .bat)。转到该路径并打开“gradle”/“gradle.bat”(对于 Windows)文件。

  • 进行以下更改。

    DEFAULT_JVM_OPTS="$JAVA_OPTS $GRADLE_OPTS"
  • 执行“.~/.bash_profile”或“.~/.bashrc”.... --或者打开一个新的 putty session 。

  • 确保 PATH 变量中包含 gradle HOME/bin (Linux/Windows)

  • 从工作区运行以下命令(这次没有显示我之前收到的 PermGen 错误):

    gradle clean 构建 jacocoTestReport sonarRunner

    :)今天早点回家。

  • 其他类似的变量有:服务器(putty session 级别)或 IDE 或 Jenkins 中的 GRADLE_OPTS/JAVA_OPTS/SONAR_RUNNER_OPTS(其中可以设置 -XX:Max.. 值)。

  • 感谢艾琳的提示。

    关于java - sonarRunner java.lang.OutOfMemoryError : PermGen space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499829/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com