Intellij JAVA_HOME variabele

Ik ben begonnen met het gebruik van Gradle en Intellij, maar ik heb problemen met het configureren van Gradle’s JVM.
Wanneer ik een nieuw Gradle-project start, mag ik JVM niet definiëren als mijn JAVA_HOME-variabele. De volgende screenshots laten zien wat er gebeurt:

nieuw aflopend project

Zoals je kunt zien zegt Intellij dat mijn JAVA_HOME-variabele niet is gedefinieerd, maar als ik echo $JAVA_HOMEtyp, kan ik mijn Java-directory krijgen, in mijn geval: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

Mijn ./~bash_profile is als volgt geconfigureerd:
export JAVA_HOME=$(/usr/libexec/java_home)

Iemand kan achterhalen wat er gebeurt?
Bedankt!


Antwoord 1, autoriteit 100%

Beetje contra-intuïtief, maar je moet eerst een SDK instellen voor Java-projecten. Selecteer rechtsonder in het IntelliJ-welkomstscherm ‘Configure > Projectstandaarden > Projectstructuur’.

Het tabblad Project aan de linkerkant laat zien dat je geen SDK hebt geselecteerd:

Daarom moet u op de knop ‘Nieuw…’ aan de rechterkant van de vervolgkeuzelijst klikken en deze naar uw JDK verwijzen. Daarna kunt u teruggaan naar het importscherm en het moet worden gevuld met uw JAVA_HOME-variabele, op voorwaarde dat u deze hebt ingesteld.


Antwoord 2, autoriteit 58%

Het probleem is dat uw “Project SDK” geen is! Voeg een “Project SDK” toe door op “Nieuw …” te klikken en kies het pad van JDK. En dan zou het goed moeten zijn.


Antwoord 3, autoriteit 15%

Tot nu toe heeft niemand de eigenlijke vraag beantwoord.

Iemand kan achterhalen wat er aan de hand is?

Het probleem hier is dat terwijl de waardevan uw $JAVA_HOMEis correct, je hebt het op de verkeerde plaatsgedefinieerd.

  • Als je een terminal opent en een Bash-sessie start, wordt het bestand ~/.bash_profilegelezen. Dus als je echo $JAVA_HOMEinvoert, wordt de waarde geretourneerd die daar is ingesteld.
  • Als je IntelliJ rechtstreeks start, zal het niet~/.bash_profilelezen … waarom zou het? Dus voor IntelliJ is deze variabele niet ingesteld.

Hier zijn twee mogelijke oplossingen voor:

  • Start IntelliJ vanuit een Bash-sessie: open een terminal en voer "/Applications/IntelliJ IDEA.app/Contents/MacOS/idea"uit. Het idea-proces neemt alle omgevingsvariabelen van Bash over die zijn exported. (Sinds je export JAVA_HOME=…hebt geëxporteerd, werkt het!), of, op de verfijnde manier:
  • Stel globale omgevingsvariabelen in die van toepassing zijn op alle programma’s, niet alleen Bash-sessies. Dit is ingewikkelder dan je zou denken en wordt uitgelegd hieren hier, bijvoorbeeld. Wat u moet doen is uitvoeren

    /bin/launchctl setenv JAVA_HOME $(/usr/libexec/java_home)
    

    Dit wordt echter gereset na een herstart. Om ervoor te zorgen dat dit bij elke opstart wordt uitgevoerd, voer je uit

    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
    

    Merk op dat dit ook het terminalproces beïnvloedt, dus het is niet nodig om iets in uw ~/.bash_profilete plaatsen.


4

In mijn geval hielpen om Android Plugin te verwijderen – idee bleef me bewonderen om Android NDK in te stellen en liet me geen Java Default SDK veranderen – en omdat ik het niet ontwikkel voor Android zou ik het kunnen verwijderen.

Other episodes