6

我正在使用 Mac OSX 10.8.5,除了 mac 的 1.6 之外,还安装了 Oracle 的 Java 1.7。我有我的 JAVA_HOME 设置和路径前面的 JAVA_HOME/bin。当我从命令行运行 grails compile 时,我可以看到它选择的是 Java 1.6 而不是 1.7。如何让 grails 命令行选择我想要的 JDK?

➤ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
➤ echo $PATH
/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin /usr/local/share/npm/bin /Users/kbrodhagen/bin /Users/kbrodhagen/.rvm/bin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/X11/bin /usr/local/git/bin
➤ set -x JAVA_OPTS "-showversion"
➤ grails compile
java version "1.6.0_51"
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509)
Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode)
4

5 回答 5

3

您使用的是哪个外壳以及您是如何设置的JAVA_HOME?Grails 应该尊重您的JAVA_HOME设置,只要它对grails命令可见,例如在 bash 中,您必须export使用变量而不是仅仅设置它,tcsh因为您将使用setenv而不是set.

$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home

您还可以/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin从 PATH 中删除,因为/usr/bin/java它将自动委托给java当前JAVA_HOME.

于 2013-09-19T12:58:33.440 回答
1

如果您只想将 Java 版本本地化到 Grails,最好的方法是编辑以下文件,

.gvm/bin/gvm-init.sh

您可以在此文件中设置 JAVA_HOME,如下所示,

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home

我的机器中有 Java 8,在这里我为 grails 设置了 java 1.7 。

于 2014-11-24T10:03:36.317 回答
1

对于新的 SDKman 方法,您可以JAVA_HOME导出[YOUR HOME]/.sdkman/candidates/grails/[concrete version or current]/bin/grails

于 2016-06-30T13:59:41.913 回答
0

如果您使用SDKMAN安装 Grails(这是目前推荐的方法),您可以将已安装的任何 Java 版本添加到 SDKMAN,它也会为您管理它们。例如:

sdk install java openjdk-8 /usr/lib/jvm/java-8-openjdk-amd64
sdk use java openjdk-8

请注意,这将为JAVA_HOME您的用户设置,因此如果您不希望这样做,您可能需要考虑其他选项之一。

$ echo $JAVA_HOME
/home/user/.sdkman/candidates/java/current

更多信息:SDKMAN 本地版本

于 2017-10-26T15:38:57.037 回答
0

我需要能够在 Ubuntu 12.04 中的 Java 7/Grails 2.4.4 项目和 Java 8/Spring 4 项目之间切换,某些事情让这变得困难:

  • 在使用 安装Java 8后,我将其设置为默认版本sudo apt-get install oracle-java8-set-default,但这显然会创建/etc/profile.d/jdk.sh/etc/profile.d/jdk.csh包含JAVA_HOMEJRE_HOME以及其他阻止我交换 JDK 的环境变量。
  • 有点奏效,但是上面的环境变量使事情变得模糊不清。

最后,我从我的环境和文件中删除了上述两项,/etc/profile.d我现在:

  • 如 webupd8 文章中所述,通过运行sudo update-java-alternatives -s java-8-oracle(或)更改 JDK;java-7-oracle
  • 运行gvm以根据需要设置当前或默认的 grails 和其他工具

似乎比它应该的更混乱,但我认为它现在正在工作。

于 2015-08-07T07:11:53.973 回答