GGTS выбирает неправильный путь Java

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, все будет работать нормально, но после перезапуска он начнет показывать вышеуказанную ошибку.


person Keen Sage    schedule 27.04.2014    source источник
comment
Вы не сходите с ума, и у вас нет очевидной проблемы с конфигурацией, как предлагается в большинстве решений, приведенных ниже. Это реальная проблема при обновлении GGTS для использования новой версии JVM после того, как она создала и запустила проекты со старой JVM. Выполняя запуск приложения из GGTS, вы фактически проходите два уровня процессов Grails. Проблема в том, что второй экземпляр, который запускается с помощью постоянного Грааля, получает неправильную версию. Проблема в том, где он получает конфигурацию для запуска этого экземпляра, и я не могу ее найти. Это происходит из-за некоторых настроек среды в eclipse.   -  person Steve Hole    schedule 18.12.2015


Ответы (4)


STS не использует JAVA_HOME, чтобы определить, какая JVM должна выполнять команды Grails. Как и большинство инструментов на основе Eclipse, он настраивается с помощью параметров рабочей области. Чтобы изменить JVM для выполнения команд Grails, используйте меню:

Окно >> Настройки.

Go to

Java >> Установленные JRE

Затем обязательно добавьте JVM, которую вы хотите использовать (если ее еще нет), и убедитесь, что она отмечена как используемая по умолчанию.

person Kris    schedule 28.04.2014
comment
Я действительно убедился в этом. но я не уверен, почему он все еще подхватывает java-7-openjdk-amd64. - person Keen Sage; 29.04.2014
comment
Не уверен, что вы имеете в виду под словом «поднять». Eclipse и STS "подбирают" JVM по умолчанию для вашей рабочей области только один раз, когда вы впервые открываете/создаете рабочую область. Это настройка рабочей области, поэтому она будет храниться «постоянно» в рабочей области, где вы можете изменить ее с помощью настроек. Я думаю, что в первый раз по умолчанию будет использоваться та же JVM, с которой работает Eclipse/STS... - person Kris; 22.05.2014
comment
... и вы можете изменить затмение виртуальной машины, с которым работает, отредактировав файл STS.ini, как в ответе VAdimo. Просто имейте в виду, что STS.ini изменит только запуск JVM eclipse и виртуальную машину по умолчанию в новом рабочем пространстве, но не в существующих рабочих пространствах. - person Kris; 22.05.2014

Когда вы запускаете eclipse, по умолчанию используется определенная системой JRE. Затмение JAVA_HOME игнорируется.

Здесь вы можете увидеть, какое затмение JRE/JDK использует. Справка -> О Eclipse -> Сведения об установке -> Конфигурация

Если вы хотите запустить eclipse со специальным JRE/JDK, например, в вашем JAVA_HOME, вам необходимо изменить файл eclipse.ini или sts.ini (обычно он находится рядом с исполняемым файлом eclipse).

добавьте путь к вашему javaw перед -jvmargs в вашем ini-файле.

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

Перезапустите eclipse и проверьте версию Java.

person Vadimo    schedule 03.05.2014
comment
Это тоже не сработало. Вот ссылка на конфигурацию и содержимое файла .ini. gist.github.com/sashwatp/5246eb4473299109fbd0 - person Keen Sage; 04.05.2014
comment
Есть странное поведение. Он будет работать нормально после переустановки, но только 1 раз. Ошибка начала появляться снова после перезагрузки. - person Keen Sage; 04.05.2014

Для каждого проекта вы можете выбрать, какой JRE/JDK eclipse должен использовать для компиляции и выполнения.

  1. You need to tell eclipse where to find all your JREs and JDKs on you system.
    • Go to Preferences->Java->Installed JREs
    • Добавьте или выполните поиск всех ваших JRE/JDK, чтобы они появились в списке.
  2. (Необязательно, но рекомендуется) Выберите для каждой среды выполнения 1.6, 1.7, 1.8 соответствующий JDK/JRE, который вы искали ранее.
  3. Now You can define which JRE/JDK Eclipse should user for your Project. In Packe Explorer right click on you Project and select properties. Next
    • Go to Java Build Path and Edit the current JRE under libraries
    • (Зависит от шага 2) Теперь вы можете выбрать среду выполнения 1.6, 1.7, 1.8 или
    • Выберите из списка альтернативную JRE свою любимую JRE/JDK.

Это должно сделать это. Нет, вы должны увидеть в проводнике пакетов, что jre изменился. Если вы сейчас выполните свой код, то при условии, что используется jre.

person Vadimo    schedule 05.05.2014

Если бы у вас было установлено несколько версий Java на вашей машине разработки, и если вы исчерпали все возможные способы настройки для использования правильной версии Java в GGTS, но безрезультатно, вы были бы очень разочарованы.

К сожалению, в редких случаях, когда ваш Grails в GGTS по-прежнему загружает не ту старую версию (например, 1.6), вместо более новой (1.7), а все индикаторы в GGTS говорят, что GGTS настроен для проекта на использование более новая версия Java, но на самом деле она не отражает вашу настройку.

Откуда ты знаешь, что это не так? Потому что, когда я запустил команду Grails (например, компиляцию Grails) из GGTS, я получил:

Unable to load extension class [org.codehaus.groovy.runtime.NioGroovyMethods]

что позволило мне поверить, что старая версия Java (1.6) по какой-то причине все еще ошибочно использовалась GGTS. Когда я запускаю следующее из командной строки вне GGTS:

cd <project directory>
grails compile

Я успешно скомпилировал проект без проблем. В чем дело?

В моем случае я сомневаюсь, что моя старая версия GGTS была обновлена ​​на месте до самой последней, но почему-то GGTS не была такой чистой, как новая переустановка. Поэтому решением для меня было переустановить последний GGTS, тогда проблема просто исчезла!

person hko19    schedule 17.04.2015