GVM / Grails shell脚本错误?

时间:2014-04-22 14:06:08

标签: shell grails ubuntu path gvm

我在Ubuntu(14.04)上刚刚安装了最新版本的GVM(1.3.13)。然后我用它来安装Grails(2.3.7),Groovy(2.2.2)和Gradle(1.11)。

Groovy和Gradle似乎安装得非常好(我可以执行他们的SDK命令,例如groovyc等)。但是每当我从任何目录执行任何 Grails命令时,我的整个终端屏幕都会清除,暂停一秒钟,然后重新绘制命令行提示符。该命令永远不会被执行。几个月前,在Nabble上,另一位用户报告了a very similar issue

从shell中,如果我执行echo $GRAILS_HOME,我会得到:

  

/home/myuser/.gvm/grails/current

如果我执行echo $PATH,我确实看到/home/myuser/.gvm/grails/current/bin在我的系统路径上。

然后我决定深入挖掘并实际转到$GRAILS_HOME。它是一个实际指向/home/myuser/.gvm/grails/2.3.7的符号链接。所以当我去那里时,我看到一个正常的Grails安装,包括一个bin目录。当我进入bin目录时,我看到了:

grails-debug
grails.bat
grails-debug.bat
startGrails.bat
startGrails
grails

我打开grails(shell脚本)并查看:

#!/bin/sh
trap "reset" EXIT
trap "reset" INT
trap "reset" TERM

DIRNAME=`dirname "$0"`
. "$DIRNAME/startGrails"

startGrails org.codehaus.groovy.grails.cli.GrailsScriptRunner "$@"

我修改了如下:

#!/bin/sh
trap "reset" EXIT
trap "reset" INT
trap "reset" TERM

echo "1..."
sleep 2s

DIRNAME=`dirname "$0"`

echo "2...dirname is $DIRNAME"
sleep 8s

. "$DIRNAME/startGrails"

echo "3..."
sleep 2s

startGrails org.codehaus.groovy.grails.cli.GrailsScriptRunner "$@"

然后保存/退出并从shell运行grails help。这是我的输出:

1...
2...dirname is /home/zharvey/.gvm/grails/current/bin

输出的最后一行(" 2 ... dirname是...... ")暂停2秒,然后我的屏幕清除(好像我已经发出)一个clear命令),我的提示重新出现。我的实际命令(grails help)实际上没有执行或生成输出。所以似乎错误存在的确切行是:

. "$DIRNAME/startGrails"

这条线甚至在做什么,为什么会导致脚本失败?

我的问题

  • 有人可以确认这实际上是Grails或GVM错误,而不是我安装错误的情况吗?
  • 最重要的是,有人可以告诉我我可以做些什么来解决这个问题并让Grails尽可能快地运行起来吗?

3 个答案:

答案 0 :(得分:4)

我遇到了类似的问题,我的问题是我错误地设置了JAVA_HOME变量。虽然JAVA在我的机器上工作但是设置如下:

JAVA_HOME=/usr/lib/jvm/jdk1.8.0/bin
export JAVA_HOME
PATH=$PATH:$JAVA_HOME
export PATH

显然,当我仔细观察它时,我发现了我的错误并将上述内容设置为:

JAVA_HOME=/usr/lib/jvm/jdk1.8.0
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH

只是一个微妙的区别,但现在它确实正常工作和命令

grails
如上所述,

没有默默地失败。

希望它有所帮助!!

答案 1 :(得分:3)

我通过一些(非常痛苦的)调试来解决这个问题。

GRAILS_HOME/bin/startGrails(POSIX脚本)中,有一行检查JAVA_HOME是否设置正确。

我没有以推荐的方式安装JDK。我不喜欢使用apt-get为我配置Java。我想自己下载JDK并自己将JAVA_HOME添加到PATH。这是问题的根源。

由于我的Ubuntu机器上没有正确设置JAVA_HOME(因为我选择了apt-get方法的手动/劝阻方法),startGrails脚本失败了(默默地介意)你,来吧Grails团队......)因为它无法访问JAVA_HOME

if [ -z "$JAVA_HOME" ] ; then
    die "JAVA_HOME environment variable is not set"

所以我把它改成了:

if [ -z "$JAVA_HOME" ] ; then
    export JAVA_HOME="<value of my $JAVA_HOME var as defined in ~/.bashrc>"

我要离开这个,因为我显然不是唯一遇到此事的人。

答案 2 :(得分:0)

面临同样的问题。我的解决方案是sudo update-alternatives --install /usr/bin/startGrails startGrails /opt/grails-2.4.3/bin/startGrails 2