2015-06-21 3 views
51

Я начал использовать Gradle и Intellij, но у меня возникли проблемы с настройкой JVM Gradle. Когда я запускаю новый проект Gradle, мне не разрешено определять JVM как переменную JAVA_HOME. Следующие скриншоты показывают, что происходит:Intellij JAVA_HOME переменная

new gradle project

Как вы можете видеть 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)

Кто-то может понять, что происходит? Спасибо!

+0

У вас есть Java, настроенный как один из ваших SDK в IntelliJ? Вы явно не требуете, чтобы JAVA_HOME был установлен, если вы это сделаете. – Makoto

ответ

38

Проблема заключается в том, что ваш «Project SDK» - это ни один! Добавьте «Project SDK», нажав «Создать ...» и выберите путь JDK. И тогда все должно быть в порядке.

+0

Спасибо. Кажется, не может найти никакой документации по этому вопросу. – honyovk

+0

@honyovk Да, это действительно странно, я потратил около часа, пытаясь сделать это, так как мой JAVA_HOME был установлен правильно, и я удалил старую версию ... Еще раз спасибо Harry.Chen –

+0

Это действительно странно. Я выполнил ваши шаги, нажал на следующую кнопку, а на экране «GroupId, ArtifactId и Version» я нажал кнопку отмены. При нажатии на первый экран IDE я открылся, и JVM Gradle был настроен правильно. –

86

Бит-конт-интуитивно понятный, но вы должны сначала настроить SDK для проектов Java. В правом нижнем углу экрана приветствия IntelliJ выберите «Настроить»> «По умолчанию проекта»> «Структура проекта».

Вкладка Project слева покажет, что у вас нет SDK выбран:

Таким образом, вы должны нажать на кнопку «Создать ...» на правой стороне выпадающего списка и указать его в JDK , После этого вы можете вернуться на экран импорта, и он должен быть заполнен переменной JAVA_HOME, если у вас есть этот набор.

+1

Re: В правом нижнем углу экрана приветствия IntelliJ - Могу ли я попасть на экран приветствия? от середины проекта? – RichMeister

+0

@RichMeister «Структура проекта» также находится в меню «Файл» с ярлыком '⌘-;' –

+0

Надеюсь, что некоторые разработчики IntelliJ смотрят эту тему и предлагают некоторые достойные сообщения об ошибках, чтобы избежать потянув волосы за эту неясную настройку? – Sid

7

Если вы хотите, чтобы ваш JAVA_HOME признан IntelliJ, вы можете сделать одно из них:

  • Начните IntelliJ из терминала/Applications/IntelliJ IDEA 14.app/Contents/MacOS (это будет ковырять Баш Env переменных)
  • добавить Войти переменный окр команды: launchctl setenv JAVA_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"

Чтобы получить ответ на свой вопрос, вы можете добавить launchctl строки в ~/.bash_profile

Как уже было сказано, вы можете игнорировать JAVA_HOME, настроив SDK в структуре проекта.

5

В моем случае мне нужен более низкий JRE, так что я должен был сказать IntelliJ использовать другую в "Настройки платформы"

  • Настройки платформы> SDKs ( + ;)
  • Нажмите кнопку +, чтобы добавить новый SDK (или переименовать и загрузить уже существующий)
  • Выберите каталог/Contents/Home из соответствующего SDK
    (т.е. /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home)
+1

спасибо, решена проблема. – Suresh

+0

это также исправлено для меня, спасибо – chinabuffet

2

До сих пор никто не ответил на актуальный вопрос.

Кто-то может понять, что происходит?

Проблема здесь состоит в том, что в то время как значение вашей $JAVA_HOMEis correct, вы определили его в неправильном месте.

  • Когда вы открываете терминал и запускаете сеанс Bash, он будет читать файл ~/.bash_profile. Таким образом, когда вы введете echo $JAVA_HOME, он вернет значение, которое было установлено там.
  • Когда вы запускаете IntelliJ напрямую, это будет не читать ~/.bash_profile ... почему это должно быть? Таким образом, для IntelliJ эта переменная не задана.

Есть два возможных решения этой:

  • Запуск IntelliJ из Баш сессии: открыть терминал и запустить "/Applications/IntelliJ IDEA.app/Contents/MacOS/idea". Процесс idea наследует любые переменные среды Bash, которые были export ред. (Так как вы сделали export JAVA_HOME=…, это работает!), Или сложный способ:
  • Установить глобальные переменные окружения, которые применяются ко всем программам, а не только к сессиям Bash. Это сложнее, чем вы думаете, и объясняется, например, here и here. Что вам нужно сделать, так это запустить

    /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.

+0

Обратите внимание, что этот подход, как и все подходы, упомянутые до сих пор, помимо запуска из командной строки, не будет динамически обновляться при обновлении Java. Бит $ (/ usr/libexec/java_home) оценивается только один раз, когда файл создается. –

Смежные вопросы