Домашняя переменная Intellij JAVA


Я начал использовать 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)

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

5 52

5 ответов:

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

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

на вкладке Проект слева будет показано, что у вас нет выбранного SDK:

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

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

  • запустите intellij из терминала / приложения / IntelliJ IDEA 14.app / Contents / MacOS (это будет выбрать ваши переменные bash env)
  • добавить переменную env входа, выполнив: launchctl setenv JAVA_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"

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

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

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

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

до сих пор никто не ответил на вопрос.

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

проблема здесь в том, что в то время как стоимостью вашего $JAVA_HOMEправильно, определена не в том месте.

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

есть два возможных решения проблемы:

  • запуск IntelliJ из сеанса Bash: откройте терминал и запустите "/Applications/IntelliJ IDEA.app/Contents/MacOS/idea". Элемент idea процесс наследует любые переменные среды Bash, которые были exported. (Так как вы сделали 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.