web-dev-qa-db-fra.com

Variable Intellij Java_HOME

J'ai commencé à utiliser Gradle et Intellij, mais je rencontre des problèmes pour configurer la machine virtuelle Java de Gradle. Lorsque je commence un nouveau projet Gradle, je ne suis pas autorisé à définir JVM en tant que variable Java_HOME. Les captures d'écran suivantes montrent ce qui se passe:

new gradle project

Comme vous pouvez le voir, Intellij indique que ma variable Java_HOME n'est pas définie. Cependant, si je tape echo $Java_HOME, je peux obtenir mon répertoire Java, dans mon cas: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

Mon ./~bash_profile est configuré comme suit: export Java_HOME=$(/usr/libexec/Java_home)

Quelqu'un peut comprendre ce qui se passe? Je vous remercie!

58
user2568889

Le problème est que votre "Project SDK" n’en est pas un! Ajoutez un "Project SDK" en cliquant sur "Nouveau ..." et choisissez le chemin du JDK. Et puis ça devrait aller.

45
Harry.Chen

Un peu contre-intuitif, mais vous devez d’abord installer un SDK pour les projets Java. En bas à droite de l'écran d'accueil d'IntelliJ, sélectionnez "Configurer> Paramètres par défaut du projet> Structure du projet".

L'onglet Projet à gauche montrera que vous n'avez pas sélectionné de SDK:

Par conséquent, vous devez cliquer sur le bouton "Nouveau ..." situé à droite du menu déroulant et le diriger vers votre JDK. Après cela, vous pouvez revenir à l'écran d'importation et il devrait être rempli avec votre variable Java_HOME, à condition que vous ayez cet ensemble.

93
RMcGuigan

Si vous souhaitez que votre Java_HOME soit reconnu par intellij, vous pouvez effectuer l’une des opérations suivantes:

  • Démarrez votre intellij à partir du terminal/Applications/IntelliJ IDEA 14.app/Contents/MacOS (cela sélectionnera vos variables bash env)
  • Ajoutez une variable d’env de login en exécutant: launchctl setenv Java_HOME "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home"

Pour répondre directement à votre question, vous pouvez ajouter la ligne launchctl dans votre ~/.bash_profile

Comme d'autres personnes vous ont répondu, vous pouvez ignorer Java_HOME en configurant le SDK dans la structure du projet.

8
gk0

Dans mon cas, j'avais besoin d'un JRE plus bas, donc je devais dire à IntelliJ d'en utiliser un autre dans "Paramètres de la plate-forme".

  • Paramètres de plate-forme> SDK ( +; )
  • Clique le + bouton pour ajouter un nouveau SDK (ou renommer et charger un existant)
  • Choisissez le répertoire/Contents/Home dans le SDK approprié
    (i.e. /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home)
6
Shanimal

Jusqu'à présent, personne n'a répondu à la question.

Quelqu'un peut comprendre ce qui se passe?

Le problème est qu’alors que la valeur de votre _$Java_HOME_ est correcte , vous l’avez définie au mauvais endroit .

  • Lorsque vous ouvrez un terminal et lancez une session Bash, le fichier _~/.bash_profile_ sera lu. Ainsi, lorsque vous entrez _echo $Java_HOME_, la valeur qui y a été définie est renvoyée.
  • Lorsque vous lancez IntelliJ directement, il ne lit pas _~/.bash_profile_… pourquoi le devrait-il? Donc, pour IntelliJ, cette variable n'est pas définie.

Il y a deux solutions possibles à cela:

  • Lancez IntelliJ à partir d’une session Bash: ouvrez un terminal et exécutez _"/Applications/IntelliJ IDEA.app/Contents/MacOS/idea"_. Le processus idea héritera de toutes les variables d'environnement de Bash ayant été exported. (Depuis que vous avez fait _export Java_HOME=…_, ça marche!), Ou de manière sophistiquée:
  • Définissez des variables d'environnement globales qui s'appliquent à tous les programmes, pas seulement aux sessions Bash. Ceci est plus compliqué que vous ne le pensez, et est expliqué ici et ici , par exemple. Ce que vous devriez faire, c'est courir

    _/bin/launchctl setenv Java_HOME $(/usr/libexec/Java_home)
    _

    Cependant, cela est réinitialisé après un redémarrage. Pour vous assurer que cela est exécuté à chaque démarrage, exécutez

    _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
    _

    Notez que ceci affecte également le processus du terminal, il n’est donc pas nécessaire de mettre quoi que ce soit dans votre _~/.bash_profile_.

5
ThomasR