GVM/Grails shell脚本错误



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

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

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

/home/myuser/.gvm/grails/当前

如果我收到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 is…")暂停2秒,然后我的屏幕清空(就像我发出了clear命令一样),我的提示再次出现。在任何时候,我的实际命令(grails help)都不会实际执行或生成输出。因此,错误存在的确切位置似乎是:

. "$DIRNAME/startGrails"

这一行到底在做什么,为什么会导致脚本失败?

我的问题

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

我也遇到了类似的问题,我的问题是我错误地设置了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

并没有像上面解释的那样默默地失败。

希望它能有所帮助!!

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

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

我没有按照推荐的方式安装JDK。我不喜欢用apt-get为我配置Java。我喜欢自己下载JDK,并在PATH中添加JAVA_HOME。这就是问题的根源

由于JAVA_HOME没有在我的Ubuntu机器上正确设置(因为我选择了手动/不鼓励的方法而不是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>"

我将不谈这个,因为我显然不是唯一一个遇到这种情况的人。

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

相关内容

  • 没有找到相关文章

最新更新