詹金斯& Grails:初始化VM时出错

时间:2012-10-16 18:29:24

标签: linux grails jvm jenkins

我想和Jenkins一起使用Grails插件。但是每个构建都会失败并显示以下消息:

[workspace] $ /usr/local/grails-2.1.1/bin/grails clean --non-interactive
Error occurred during initialization of VM
Incompatible minimum and maximum heap sizes specified
Build step 'Build With Grails' marked build as failure

当我从控制台运行命令时,它会在没有此Java错误的情况下执行。我尝试在GRAILS_OPTS中设置内存使用量,但它仍然无效。我有点被困在这里。

3 个答案:

答案 0 :(得分:1)

cd /opt/grails/bin

查找说明的行:

GRAILS_OPTS="-server -Xmx718M -Xms718M -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8"

...并将其更改为:

GRAILS_OPTS="-server -Xmx512m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8"

答案 1 :(得分:1)

我不得不手动修改/usr/share/grails/2.1.1/bin/startGrails中的脚本来解决这个问题,因为该参数由Jenkins在JAVA_OPTS中传入并在GRAILS_OPTS中设置。

首先,我从GRAILS_OPTS中删除了参数:

GRAILS_OPTS="-server -Xmx768M -Xms768M -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8"

离开

GRAILS_OPTS="-server -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8"

然后我添加了a POSIX compliant contains function

#POSIX compliant contains implementation
#Usage string substring
contains() {
    test "${1#*$2}" != "$1"
}

然后我添加了逻辑来重新添加大小(如果它们不存在)(b / c我也使用命令行中的grails) echo语句当然只用于调试。请注意,这是对已传递文件的更改,如果您升级Grails,则可能必须重新创建。

 JAVA_OPTS="$GRAILS_OPTS $JAVA_OPTS $AGENT"
  echo "JAVA_OPTS: $JAVA_OPTS"
  if ! contains "$JAVA_OPTS" -Xms  && ! contains "$JAVA_OPTS" -Xmx
    then
        echo "Setting -Xms"
        JAVA_OPTS="-Xms768M $JAVA_OPTS"
  fi
  if ! contains "$JAVA_OPTS" -Xmx
    then
        echo "Setting -Xmx"
        JAVA_OPTS="-Xmx768M $JAVA_OPTS"
  fi
  echo "JAVA_OPTS: $JAVA_OPTS"

答案 2 :(得分:-1)

您使用的是哪种堆大小选项?这听起来像是你使用了错误的单位或让他们离开。如果我这样做,我会收到相同的错误消息:

$ JAVA_OPTS=-Xmx2048 grails run-app
Error occurred during initialization of VM
Incompatible minimum and maximum heap sizes specified    

使用-Xmx2048M按预期工作。