【问题标题】:GGTS picking incorrect java pathGGTS 选择不正确的 java 路径
【发布时间】:2014-04-27 11:56:44
【问题描述】:

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,一切都会正常,但重启后会开始显示上述错误。

【问题讨论】:

  • 您并没有失去理智,也没有像下面提出的大多数解决方案那样有明显的配置问题。当 GGTS 使用旧版 JVM 构建和运行项目后,升级 GGTS 以使用新版 JVM 时,这是一个真正的问题。在 GGTS 中执行运行应用程序时,您实际上正在经历两个级别的 grails 进程。问题是由常设 grails 启动的 second 实例获得了错误的版本。它在哪里获得启动该实例的配置是问题,我找不到它。它来自eclipse中的一些环境设置。

标签: java spring-tool-suite


【解决方案1】:

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

窗口>>首选项。

前往

Java >> 已安装的 JRE

然后确保添加您要使用的 JVM(如果还没有的话)并确保它被选中为默认值。

【讨论】:

  • 我确实证实了这一点。但我不确定为什么它仍然在使用 java-7-openjdk-amd64。
  • 不知道你所说的“捡起”是什么意思。 Eclipse 和 STS 仅在您第一次打开/创建工作区时为您的工作区“拾取”一次默认 JVM。这是一个工作区首选项,因此它将“永久”存储在工作区中,您可以在其中通过首选项进行更改。我认为它第一次默认使用与运行 Eclipse / STS 相同的 JVM...
  • ... 您可以通过编辑 STS.ini 文件来更改正在运行的 VM eclipse,如 VAdimo 的回答中所示。请注意,STS.ini 只会更改 JVM eclipse 运行时使用的默认虚拟机以及 new 工作区中的默认 VM,但不会更改现有工作区。
【解决方案2】:

当您启动 eclipse 时,系统定义的 JRE 默认使用。 eclipse JAVA_HOME 被忽略。

您可以在此处查看 Eclipse 正在使用哪个 JRE/JDK。 帮助 -> 关于 Eclipse -> 安装细节 -> 配置

如果你想用一个特殊的 JRE/JDK 启动 eclipse,比如你的 JAVA_HOME 中的那个,你必须修改 eclipse.ini 或 sts.ini 文件(通常它在 eclipse 可执行文件旁边)。

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

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

重启eclipse并验证java版本。

【讨论】:

【解决方案3】:

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

  1. 您需要告诉 eclipse 在哪里可以找到您系统上的所有 JRE 和 JDK。
    • 转到首选项->Java->已安装的 JRE
    • 添加或搜索您的所有 JRE/JDK,以便它们出现在列表中
  2. (可选但推荐)为每个执行环境选择您之前搜索过的匹配 JDK/JRE 1.6、1.7、1.8。
  3. 现在您可以定义应为您的项目使用的 JRE/JDK Eclipse。在 Packe Explorer 中右键单击您的项目并选择属性。下一个
    • 转到 Java Build Path 并编辑库下的当前 JRE
    • (取决于步骤 2)您现在可以选择执行环境 1.6、1.7、1.8 或
    • 从Alternate JRE列表中选择你最喜欢的JRE/JDK

应该这样做。不,您应该在包资源管理器中看到 jre 已更改。如果您现在执行代码,则使用提供的 jre。

【讨论】:

    【解决方案4】:

    如果您的开发机器上安装了多个 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]
    

    这让我相信,由于某种原因,GGTS 仍然错误地使用了 Java 旧版本 (1.6)。当我从 GGTS 的命令行外部运行以下命令时:

    cd <project directory>
    grails compile
    

    我成功编译了项目,没有任何问题。怎么回事?

    就我而言,我怀疑我的旧 GGTS 版本是否已就地升级到最新版本,但不知何故,GGTS 不如重新安装干净。因此,我的解决方案是重新安装最新的GGTS,然后问题就解决了!

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      相关资源
      最近更新 更多