GGTS(Groovy Grails工具套件)正在挑选JAVA_HOME的错误值。当我检查终端中的值时它显示java-6,但是GGTS正在选择java-7。
sashwat@sashwat-desktop:~$ echo ${JAVA_HOME}
/usr/lib/jvm/java-6-openjdk-amd64
我在GGTS中收到以下错误
Error executing script TestApp: java.io.IOException:
Cannot run program "/usr/lib/jvm/java-7-openjdk-amd64/bin/java" (in directory "/home/sashwat/grails/gTunes"):
java.io.IOException: error=2, No such file or directory (Use --stacktrace to see the full trace)
我可以从命令行运行应用程序,当我尝试从GGTS运行它时,它只会出错。有人可以在这方面帮助我吗?
有一种奇怪的行为。如果我重新安装GGTS,一切都会正常工作但重启后会开始显示上述错误。
答案 0 :(得分:2)
STS没有使用' JAVA_HOME'确定执行Grails命令的JVM。与大多数基于Eclipse的工具一样,它通过工作区设置进行配置。要更改用于执行grails命令的JVM,请使用菜单:
窗口>>偏好。
转到
Java>>已安装的JRE
然后确保添加要使用的JVM(如果尚未添加)并确保将其作为默认选项进行检查。
答案 1 :(得分:0)
当你启动eclipse时,默认使用系统定义的JRE。日食JAVA_HOME被忽略了。
你可以在这里看到哪个JRE / JDK eclipse正在使用。 帮助 - >关于Eclipse - >安装细节 - >配置
如果您想使用特殊的JRE / JDK(如JAVA_HOME中的那个)启动eclipse,则必须修改eclipse.ini或sts.ini文件(通常它位于eclipse可执行文件旁边)。
在你的ini文件中的-jvmargs之前添加javaw的路径。
-vm
"C:\Program Files\Java\jdk1.6.0_16\bin\javaw.exe"
-jvmargs
...
重启eclipse并验证java版本。
答案 2 :(得分:0)
对于每个项目,您可以选择JRE / JDK eclipse用于编译和执行的内容。
多数民众赞成应该这样做。不,你应该在包浏览器中看到jre改变了。如果您现在执行代码,则使用提供的jre。
答案 3 :(得分:0)
如果您的开发计算机上安装了多个Java版本,并且如果您已经用尽所有可能的配置方法在GGTS中使用正确的Java版本但无济于事,那么您将非常沮丧。
不幸的是,在极少数情况下,GGTS中的Grails仍然会选择错误的旧版本(例如1.6),当它应该拿起较新版本(1.7)时,GGTS中的所有指标都表示为项目配置了GGTS使用较新的Java版本,但它实际上并没有反映您的设置。
你怎么知道不是?因为当我从GGTS中运行Grails命令(例如grails编译)时,我得到了:
Unable to load extension class [org.codehaus.groovy.runtime.NioGroovyMethods]
让我相信Java旧版本(1.6)由于某种原因仍然错误地被GGTS使用。当我从GGTS的命令行外面运行以下命令时:
cd <project directory>
grails compile
我成功编译项目没有问题。发生了什么事?
在我的情况下,我怀疑我的旧GGTS版本已经就地升级到最新版本,但不知何故GGTS并不像重新安装一样干净。因此,我的解决方案是重新安装最新的GGTS,然后问题就消失了!