Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GGTS拾取不正确的java路径_Java_Spring Tool Suite - Fatal编程技术网

GGTS拾取不正确的java路径

GGTS拾取不正确的java路径,java,spring-tool-suite,Java,Spring Tool Suite,GGTS(Groovy Grails Tools Suite)选择了不正确的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 progr

GGTS(Groovy Grails Tools Suite)选择了不正确的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,一切都会正常工作,但重新启动后会显示上述错误。

STS不会使用“JAVA_HOME”来确定要执行Grails命令的JVM。与大多数基于Eclipse的工具一样,它是通过工作区设置进行配置的。要更改JVM以执行grails命令,请使用菜单:

窗口>>首选项

Java>>已安装的JRE


然后确保添加要使用的JVM(如果还没有),并确保将其选中为默认值。

启动eclipse时,默认情况下使用系统定义的JRE。eclipse JAVA_主页被忽略

您可以在这里看到JRE/JDK eclipse正在使用哪个。 帮助->关于Eclipse->安装详细信息->配置

如果您想用一个特殊的JRE/JDK启动eclipse,比如JAVA_主页中的JRE/JDK,那么您必须修改eclipse.ini或sts.ini文件(通常它位于eclipse可执行文件的旁边)

在ini文件中的-jvmargs之前添加javaw的路径

-vm
"C:\Program Files\Java\jdk1.6.0_16\bin\javaw.exe" 
-jvmargs
...

重新启动eclipse并验证java版本。

对于每个项目,您可以选择JRE/JDK eclipse应该使用什么来编译和执行

  • 您需要告诉eclipse在您的系统上哪里可以找到所有JRE和JDK。
    • 转到首选项->Java->已安装的JRE
    • 添加或搜索所有JRE/JDK,使其显示在列表中
  • (可选但推荐)为每个执行环境选择您之前搜索的匹配JDK/JRE
  • 现在您可以定义您的项目应该使用哪个JRE/JDK Eclipse。在packeexplorer中,右键单击项目并选择属性。下一个
    • 转到Java构建路径并编辑库下的当前JRE
    • (取决于步骤2)您现在可以选择执行环境1.6、1.7、1.8或
    • 备选JRE列表中选择您最喜欢的JRE/JDK

  • 这是我们应该做的。不,您应该在包资源管理器中看到jre已更改。如果您现在执行代码,那么前提是使用了jre。

    如果您的开发机器上安装了多个Java版本,并且如果您已经用尽了所有可能的配置方法,以便在GGTS中使用正确的Java版本,但都没有用,那么您将非常沮丧

    不幸的是,在极少数情况下,GGTS中的Grails仍然选择了错误的旧版本(例如1.6),而它应该选择较新的版本(1.7),GGTS中的所有指标都表示GGTS是为项目配置的,以使用较新的Java版本,但实际上它并没有反映您的设置

    你怎么知道不是?因为当我在GGTS中运行Grails命令(例如Grails compile)时,我得到:

    Unable to load extension class [org.codehaus.groovy.runtime.NioGroovyMethods]
    
    这让我相信,出于某种原因,Java旧版本(1.6)仍然被GGTS错误地使用。当我从GGTS的命令行外侧运行以下命令时:

    cd <project directory>
    grails compile
    
    cd
    grails编译
    
    我顺利地完成了这个项目。发生什么事了


    在我的情况下,我怀疑我的老GGTS版本已经升级到最新版本,但不知何故,GGTS并没有重新安装时那么干净。因此,我的解决方案是重新安装最新的GGTS,然后问题就消失了

    我确实证实了这一点。但我不知道为什么它还在使用java-7-openjdk-amd64。我不知道你所说的“使用”是什么意思。Eclipse和STS仅在您第一次打开/创建工作区时为您的工作区“拾取”一次默认JVM。这是一个工作区首选项,因此它将“永久”存储在工作区中,您可以通过首选项在其中更改它。我认为第一次它将默认使用Eclipse/STS运行时使用的JVM。。。。。。您可以通过编辑STS.ini文件来更改eclipse运行的VM,如VAdimo的回答所示。请注意,STS.ini只会更改eclipse在新工作区中运行的JVM和默认VM,而不会更改现有工作区中的VM。下面是指向配置和.ini文件内容的链接。有一种奇怪的行为。重新安装后可以正常工作,但只需1次。重新启动后,错误将再次出现。您并没有失去理智,也没有像以下大多数解决方案那样出现明显的配置问题。当GGTS使用旧版JVM构建和运行项目后,升级GGTS以使用新版本JVM时,这是一个真正的问题。在GGTS中运行应用程序时,实际上要经历两个级别的grails过程。问题是由站立的grails启动的第二个实例得到了错误的版本。问题是它在哪里获得启动该实例的配置,我找不到它。它来自eclipse中的一些环境设置。