Как заставить grails выбрать правильный JDK?
Я использую Mac OSX 10.8.5 с Java 1.7 Oracle, установленной в дополнение к 1.6 mac. У меня есть набор JAVA_HOME и JAVA_HOME/bin в передней части моего пути. Когда я запускаю компиляцию grails из командной строки, Я вижу, что он выбирает 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)
5 ответов
какую оболочку вы используете и как именно вы установили JAVA_HOME
? Граали должны уважать ваши JAVA_HOME
настройка до тех пор, пока она видна , например, в 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
С вашего пути как /usr/bin/java
автоматически делегирует соответствующий текущего JAVA_HOME
.
Если вы хотите локализовать версию Java только для Grails, лучший способ-отредактировать файл ниже,
.gvm/bin/gvm-init.sh
вы можете установить JAVA_HOME в этом файле, как показано ниже,
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
У меня есть Java 8 в моей машине, и здесь я устанавливаю java 1.7 для grails только.
для нового метода SDKman вы можете экспортировать JAVA_HOME
на [YOUR HOME]/.sdkman/candidates/grails/[concrete version or current]/bin/grails
мне нужно было переключаться между проектом Java 7/Grails 2.4.4 и проектом Java 8 / Spring 4 в Ubuntu 12.04, и некоторые вещи затрудняли это:
- я установить Java 8 в качестве версии по умолчанию после установки с помощью
sudo apt-get install oracle-java8-set-default
, но это, по-видимому, создает/etc/profile.d/jdk.sh
и/etc/profile.d/jdk.csh
содержащихJAVA_HOME
,JRE_HOME
и другие env vars, которые помешали мне заменить JDK. - этой вроде работал, но выше env ВАР слишком все затуманивал.
в конце концов, я удалил оба вышеуказанных элемента из моей среды и файлов в /etc/profile.d
а я:
- измените JDK, запустив
sudo update-java-alternatives -s java-8-oracle
(илиjava-7-oracle
), как указано в статье webupd8; - выполнить
gvm
чтобы установить текущие или стандартные граали и другие инструменты по мере необходимости
кажется более грязным, чем должно быть, но я думаю, что он работает сейчас.
Если вы используете SDKMAN для установки Grails (который является в настоящее время рекомендуемый метод), вы можете добавить любые версии Java, которые вы установили в SDKMAN, и он будет управлять ими для вас. Например:
sdk install java openjdk-8 /usr/lib/jvm/java-8-openjdk-amd64
sdk use java openjdk-8
обратите внимание, что это будет set JAVA_HOME
для вашего пользователя, поэтому, если вы этого не хотите, вы можете рассмотреть один из других вариантов.
$ echo $JAVA_HOME
/home/user/.sdkman/candidates/java/current
дополнительные сведения: SDKMAN локальные версии