Intellij JAVA_HOME переменная
Я начал использовать Gradle и Intellij, но у меня возникли проблемы с настройкой JVM от Gradle. Когда я запускаю новый проект Gradle, мне не разрешается определять JVM как мою переменную JAVA_HOME. Следующие скриншоты показывают, что происходит:
Как видите, Intellij говорит, что моя переменная JAVA_HOME не определена, однако, если я наберу echo $JAVA_HOME
Я могу получить свой каталог Java, в моем случае: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
Мой./~bash_profile настроен следующим образом:export JAVA_HOME=$(/usr/libexec/java_home)
Кто-то может понять, что происходит? Спасибо!
7 ответов
Проблема в том, что у вас "Project SDK" нет! Добавьте "Project SDK", нажав "New ..." и выберите путь JDK. И тогда все должно быть в порядке.
Немного интуитивно понятно, но сначала вы должны установить SDK для проектов Java. В правом нижнем углу экрана приветствия IntelliJ выберите "Настройка"> "Параметры проекта по умолчанию"> "Структура проекта".
Вкладка Project слева покажет, что у вас нет выбранного SDK:
Поэтому вы должны нажать кнопку "Создать..." в правой части раскрывающегося списка и указать на свой JDK. После этого вы можете вернуться к экрану импорта, и он должен быть заполнен вашей переменной JAVA_HOME, если у вас есть этот набор.
Пока никто не ответил на актуальный вопрос.
Кто-то может понять, что происходит?
Проблема здесь в том, что в то время как ценность вашего $JAVA_HOME
правильно, вы определили это в неправильном месте.
- Когда вы открываете терминал и запускаете сеанс Bash, он будет читать
~/.bash_profile
файл. Таким образом, когда вы вводитеecho $JAVA_HOME
, он вернет значение, которое было установлено там. - Когда вы запускаете IntelliJ напрямую, он не будет читать
~/.bash_profile
... зачем это? Таким образом, для IntelliJ эта переменная не установлена.
Есть два возможных решения этого:
- Запустите IntelliJ из сеанса Bash: откройте терминал и запустите
"/Applications/IntelliJ IDEA.app/Contents/MacOS/idea"
,idea
Процесс будет наследовать любые переменные окружения Bash, которые былиexport
редактор (Так как вы сделалиexport JAVA_HOME=…
, это работает!), или, изощренный способ: Установите глобальные переменные среды, которые применяются ко всем программам, а не только к сеансам Bash. Это сложнее, чем вы думаете, и объясняется здесь и здесь, например. Что вы должны сделать, это бежать
/bin/launchctl setenv JAVA_HOME $(/usr/libexec/java_home)
Тем не менее, это сбрасывается после перезагрузки. Чтобы убедиться, что это запускается при каждой загрузке, выполните
cat << EOF > ~/Library/LaunchAgents/setenv.JAVA_HOME.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>setenv.JAVA_HOME</string> <key>ProgramArguments</key> <array> <string>/bin/launchctl</string> <string>setenv</string> <string>JAVA_HOME</string> <string>$(/usr/libexec/java_home)</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceIPC</key> <false/> </dict> </plist> EOF
Обратите внимание, что это также влияет на процесс терминала, поэтому нет необходимости помещать что-либо в ваш
~/.bash_profile
,
Если вы хотите, чтобы ваш JAVA_HOME распознавался intellij, вы можете выполнить одно из следующих действий:
- Начните свой intellij из терминала /Applications/IntelliJ IDEA 14.app/Contents/MacOS (это выберет ваши переменные bash env)
- Добавьте логин env-переменной, выполнив:
launchctl setenv JAVA_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"
Чтобы напрямую ответить на ваш вопрос, вы можете добавить строку launchctl в ваш ~/.bash_profile
Как уже отвечали другие, вы можете игнорировать JAVA_HOME, настроив SDK в структуре проекта.
В моем случае мне нужен был более низкий JRE, поэтому мне пришлось сказать IntelliJ использовать другой в "Настройках платформы"
- Настройки платформы> SDK (⌘+;)
- Нажмите кнопку +, чтобы добавить новый SDK (или переименовать и загрузить существующий)
- Выберите каталог /Contents/Home из соответствующего SDK
(т.е. /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home)
Щелкните правой кнопкой мыши по проекту -> Открыть настройки модуля -> Щелкните SDK
Выберите домашний каталог Java
В моем случае это помогло удалить плагин Android - Идея продолжала уговаривать меня установить Android NDK и не позволяла менять SDK Java по умолчанию - и, поскольку я не разрабатываю для Android, я мог удалить его.