Intellij JAVA_HOME переменная

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

новый gradle проект

Как видите, 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, я мог удалить его.

Другие вопросы по тегам