Hoe de standaard Java (JDK)-versie op macOS instellen of wijzigen?

Hoe kun je de standaardversie van Java op een mac wijzigen?


Antwoord 1, autoriteit 100%

Voer eerst /usr/libexec/java_home -Vuit, wat zoiets als het volgende zal opleveren:

Matching Java Virtual Machines (3):
1.8.0_05, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
1.6.0_65-b14-462, x86_64:   "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home

Kies de versie die u als standaard wilt hebben (1.6.0_65-b14-462omwille van de argumenten) en dan:

export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462`

of je kunt alleen de hoofdversie specificeren, zoals:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

Als u nu java -versionuitvoert, ziet u:

java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

Voeg de regel export JAVA_HOME…toe aan het init-bestand van je shell.

Voor Bash (zoals vermeld door antonyh):

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

Voor vissen (zoals vermeld door ormurin)

set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)

Het .zshrc-bestand bijwerken zou moeten werken:

nano ~/.zshrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0)

Druk op CTRL+X om de editor af te sluiten
Druk op Y om uw wijzigingen op te slaan

source ~/.zshrc
echo $JAVA_HOME
java -version

Antwoord 2, autoriteit 27%

Dit antwoord is een poging om het volgende aan te pakken: hoe java-versie voor het hele systeem te beheren(niet alleen in de momenteel draaiende shell) wanneer verschillende versies van JDKzijn geïnstalleerd voor ontwikkeling doeleinden op macOS El Capitan of nieuwer (Sierra, High Sierra, Mojave). Voor zover ik weet, doet geen van de huidige antwoorden dat (*).

Als ontwikkelaar gebruik ik verschillende JDK’s en ik wil gemakkelijk van de ene naar de andere overschakelen. Meestal heb ik de nieuwste stabiele voor algemeen gebruik en andere voor tests. Maar ik wil niet dat het systeem (bijvoorbeeld wanneer ik mijn IDE start) de nieuwste “early access”-versie gebruikt die ik momenteel heb. Ik wil de standaardinstelling van het systeem controleren, en dat zou de laatste stabiele moeten zijn.

De volgende aanpak werkt met ten minste Java 7 tot 12(vroegtijdige toegang op het moment van schrijven), met Oracle JDKof OpenJDK(inclusief builds door AdoptOpenJDK geproduceerd na half oktober 2018).

Oplossing zonder tools van derden:

  • laat alle JDK’s op hun standaardlocatie staan, onder /Library/Java/JavaVirtualMachines. Het systeem kiest standaard de hoogste versie.
  • Om een ​​JDK uit te sluiten van gesnoeid standaard, hernoem de naam van de Contents/Info.plistnaar Info.plist.disabled. Die JDK kan nog steeds worden gebruikt wanneer $JAVA_HOMEPUNTEN NAAR ZIJN, of expliciet wordt verwezen in een script of configuratie. Het wordt eenvoudig genegeerd door de javavan het systeem.

Systeemwerper gebruikt de JDK met de hoogste versie onder degenen die een Info.plistbestand hebben.

Kies bij het werken in een schaal met alternatieve JDK, kiest u uw methode onder bestaande antwoorden (jenvof aangepaste aliassen / scripts rond /usr/libexec/java_home, enz.) .


Details van onderzoek in deze gist .


(*) Huidige antwoorden zijn ofwel verouderd (niet langer geldig voor MacOS El Capitan of Sierra), of alleen een enkele JDK adresseren of het systeembrede aspect niet aanpakken. Velen leggen uit hoe u $JAVA_HOMEkunt wijzigen, maar dit beïnvloedt alleen de huidige schaal en wat van daaruit wordt gelanceerd. Het heeft geen invloed op een aanvraag die is gestart vanaf OS Launcher (tenzij u het juiste bestand wijzigen en uitloggen / inloggen, dat vervelend is). Hetzelfde voor Jenv, het is cool en alles, maar voor zover ik kan zien, verandert het alleen maar verandert omgevingsvariabelen, dus het heeft dezelfde beperking.


3, Autoriteit 17%

Toevoegen aan de bovenstaande antwoorden, leg ik de volgende regels in mijn .bash_profile(of .zshrcvoor MacOS 10.15+), waardoor het echt handig is om te schakelen (inclusief @ Elektromin’s Commentaar voor Java 9):

alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version"
alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version"
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"

Voer na het invoegen $ source .bash_profile

uit

Ik kan overschakelen naar Java 8 door het volgende te typen:

$ j8
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

Antwoord 4, autoriteit 3%

Een kleine visfunctie gebaseerd op /usr/libexec/java_home

function jhome
    set JAVA_HOME (/usr/libexec/java_home $argv)
    echo "JAVA_HOME:" $JAVA_HOME
    echo "java -version:"
    java -version
end

Als je geen vis gebruikt, kun je iets soortgelijks doen in bash:

#!/bin/bash
jhome () {
  export JAVA_HOME=`/usr/libexec/java_home $@`
  echo "JAVA_HOME:" $JAVA_HOME
  echo "java -version:"
  java -version
}

Om vervolgens tussen java’s te schakelen:

$> jhome           #switches to latest java
$> jhome -v 1.7    #switches to java 1.7
$> jhome -v 1.6    #switches to java 1.6

ref: https://gist.github.com/kenglxn/1843d552dff4d4233271


Antwoord 5, autoriteit 2%

Gebruik jenvis een gemakkelijke manier.

  1. Installeer jenv, zie Aan de slag

  2. Config jenv

    cd ~/.jenv/candidates/
    mkdir java
    cd java
    mkdir 1.7
    mkdir 1.8
    
  3. Symlink het jdk-pad

    ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.7
    ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.8
    
  4. Je bent helemaal klaar

schakelopdracht:

jenv use java 1.8

standaard instellen:

jenv default java 1.7

Antwoord 6, autoriteit 2%

Het is een beetje lastig, maar probeer de stappen te volgen die worden beschreven in Java installeren op OS X 10.9 (Mavericks). Kortom, je zult je alias moeten updaten naar java.

Stap voor stap:

Na het installeren van JDK 1.7, moet u de sudo ln -snfuitvoeren om de link te wijzigen in de huidige java. Open hiervoor Terminal en geef het commando:

sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

Houd er rekening mee dat de directory jdk1.7.0_51.jdkkan veranderen, afhankelijk van de SDK-versie die je hebt geïnstalleerd.

Nu moet je java_homezo instellen dat het verwijst naar waar jdk_1.7.0_xx.jdkis geïnstalleerd. Open de Terminal opnieuw en typ:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home"

U kunt de regel export JAVA_HOMEhierboven toevoegen aan uw .bashrc-bestand om Java permanent in uw Terminal te hebben


Antwoord 7, autoriteit 2%

tl;dr

Voeg de regel toe:

export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'

naar het bestand

~/.bash_profile

(vervang jdk1.8.0_144.jdk door uw gedownloade versie)

vervolgens source ~/.bash_profile


Antwoord 8, autoriteit 2%

installeer JDK, niet alleen JRE

/usr/libexec/java_home -v 1.8

geeft

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

volgende

touch .bash_profile
open -a TextEdit.app .bash_profile

TextEdit laat je een lege pagina zien die je kunt invullen.

toevoegen aan document:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

in terminal:

export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

probeer het commando:

javac -version

moeten uitvoeren:

javac 1.8.0_111

Antwoord 9

Gebruik jenv, het is als een Java-omgevingsmanager. Het is supergemakkelijk te gebruiken en schoon te maken

Voor Mac, volg de stappen:

brew install jenv
git clone https://github.com/gcuisinier/jenv.git ~/.jenv

Installatie: als je bash gebruikt, volg dan deze stappen:

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l

Voeg gewenste versies van JVM toe aan jenv:

jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
jenv add /System/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home

Controleer de geïnstalleerde versies:

jenv versions

Stel de Java-versie in die u wilt gebruiken door:

jenv global oracle64-1.6.0

Antwoord 10

Vier eenvoudige stappen met behulp van terminal voor mensen die het standaardproces gebruiken.. 🙂

  1. echo $JAVA_HOMEgeeft je het huidige Java-home. Voor bijv.: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/

  2. cd /Library/Java/JavaVirtualMachines/brengt u naar de map waar u normaal gesproken jdks installeert (het kan voor uw machines anders zijn)

  3. lstoont je beschikbare mappen (normaal heeft het de versienummers, bijvoorbeeld: jdk1.8.0_191.jdk openjdk-11.0.2.jdk)
  4. export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home'zal de java home veranderen..

Antwoord 11

function setjdk() {
  if [ $# -ne 0 ]; then
    removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
    if [ -n "${JAVA_HOME+x}" ]; then
      removeFromPath $JAVA_HOME
    fi
    export JAVA_HOME=`/usr/libexec/java_home -v $@`
    export PATH=$JAVA_HOME/bin:$PATH
  fi
}

zet dit in je ~/.profile en gebruik het in je terminal zoals setjdk 1.8, setjdk 1.7, setjdk 9etc etc …

Als je removeFromPathniet hebt, dan is het:


function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}


Antwoord 12

macOS El Capitanof nieuwer zal de hogere versie van de JDK kiezen die beschikbaar is in /Library/Java/JavaVirtualMachines, dus om te downgraden kunt u het bestand hernoemen Info.plistnaar iets anders zoals Info.plist.disabledzodat het besturingssysteem een eerdere versie kiest.


Antwoord 13

Je kunt het toevoegen aan je .bash_profile om de versie standaard in te stellen.

//Open bash profile
open ~/.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
// run bash profile
source ~/.bash_profile

Antwoord 14

voeg de volgende opdracht toe aan het bestand ~/.zshenv

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

Antwoord 15

  1. Voeg de volgende regel code toe aan uw .zshrc(of bash_profile):

alias j=’f(){ export JAVA_HOME=/usr/libexec/java_home -v $1};f’

  1. Opslaan in sessie:

$ bron .zshrc

  1. Opdracht uitvoeren (bijv. j 13, j14, j1.8…)

$ j 1.8

Uitleg
Dit is geparametriseerd, zodat u het script niet hoeft bij te werken zoals andere geposte oplossingen. Als u de JVM niet hebt geïnstalleerd, wordt u geïnformeerd. Voorbeeldcases hieronder:

/Users/user/IDE/project $ j 1.8
/Users/user/IDE/project $ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.265-b01, mixed mode)
/Users/user/IDE/project $ j 13
/Users/user/IDE/project $ java -version
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
/Users/user/IDE/project $ j 1.7
Unable to find any JVMs matching version "1.7".

Antwoord 16

Overweeg de volgende benadering alleenom de JDK voor elk en specifiek tabblad van uw terminal te wijzigen (d.w.z. Iterm).

Met in het pad /Library/Java/JavaVirtualMachinesde twee volgende jdks

  • openjdk8u275-b01
  • openjdk-11.0.9.1+1

En in het bestand .bash_profilehet volgende:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.0.9.1+1/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

Als u Itermopent met een eerste Tab Aen het volgende uitvoert:

javac -version
javac 11.0.9.1
java -version
openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)

De uitvoer is correct en wordt verwacht

Maar als je een tweede Tab Bopent en die JDK overschrijft, doe dan het volgende:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk8u275-b01/Contents/Home/
export PATH=$JAVA_HOME/bin:$PATH

Dan

javac -version
javac 1.8.0_275
java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.275-b01, mixed mode)

Het werkt prima. Als de Tab Bis gesloten of als u een nieuwe Tab Copent, werken ze natuurlijk allemaal volgens de instellingen van .bash_profile


Antwoord 17

Van Apple’s officiële java_home( 1) man-pagina:

**USAGE**
   /usr/libexec/java_home  helps  users  set a $JAVA_HOME in their login rc files, or provides a way for
   command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi-
   tecture  requirement.  The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory,
   which is useful for starting Java command-line tools from launchd plists without hardcoding the  full
   path to the Java command-line tool.
   Usage for bash-style shells:
          $ export JAVA_HOME=`/usr/libexec/java_home`
   Usage for csh-style shells:
          % setenv JAVA_HOME `/usr/libexec/java_home`

18

JDK-schakelaarscript

Ik heb het antwoord van @alex hierboven aangepast en schreef het volgende om de code voor Java 9 te bevestigen.

$ cat ~/.jdk
#!/bin/bash
#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() {
  echo "Switching java version $1";
  requestedVersion=$1
  oldStyleVersion=8
  # Set the version
  if [ $requestedVersion -gt $oldStyleVersion ]; then
    export JAVA_HOME=$(/usr/libexec/java_home -v $1);
  else
    export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
  fi
  echo "Setting JAVA_HOME=$JAVA_HOME"
  which java
  java -version;
}

Schakel over naar Java 8

$ jdk 8
Switching java version 8
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Schakel over naar Java 9

$ jdk 9
Switching java version 9
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
/usr/bin/java
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

19

Als u nog steeds niet in staat bent om het in te stellen. met behulp van deze opdracht.

Uitvoer Java_Home = /usr/libexec/java_home -v 1.8

Dan moet u deze gebruiken.

EXPORT JAVA_HOME = $(/usr/libexec/java_home -v 1.8)

het zal zeker werken.


20

Vind eerst eruit waar stel je de omgevingsvariabelen op –

  1. emacs
  2. BASH_PROFILE
  3. ZSHRC-bestand

Stappen om de omgevingsvariabele in te stellen: –

  1. Download de JDK van Java

  2. Installeer het op Dubbelklik

  3. Nu instellen omgevingsvariabelen in uw bestand

    a. Voor Emacs.profile kunt u deze Link of bekijk de onderstaande schermafbeelding

b. Voor ZSH-profielinstelling –

1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
2. source ~/.zshrc - Restart zshrc to reflect the changes.
3. echo $JAVA_HOME - make sure path is set up properly 
   ----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
4. java -version 
   -->  java version "1.8.0_112"  Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)

Alle set nu kunt u de Java-versie eenvoudig upgraden of degraderen ..


21

Ik zal mijn ervaringen delen met MacOS BIG SUR V11.4, de beste manier om met deze problemen om te gaan, is door Java te installeren met behulp van Homebrew:

1 – Installeer Homebrew.

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2 – Installeer Homebrew Cask.

$ brew tap homebrew/cask-versions 
$ brew update 
$ brew tap caskroom/cask

3 – Installeer de nieuwste versie van Java

$ brew cask install java

4 – Installeer de andere benodigde versies van Java (Java8, Java11, Java13).

$ brew tap adoptopenjdk/openjdk
$ brew cask install adoptopenjdk8
$ brew cask install adoptopenjdk11
$ brew cask install adoptopenjdk13
$ brew cask install adoptopenjdk14

5 – Schakel tussen verschillende versies van Java

Schakelen tussen verschillende versies van JAVA, hoeft u alleen het volgende toe te voegen aan uw .bash_profileof .zshrc.

In dit geval willen we in staat zijn om te schakelen tussen Java8, Java11, Java13 en Java14:

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)
export JAVA_14_HOME=$(/usr/libexec/java_home -v14)
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java13='export JAVA_HOME=$JAVA_13_HOME'
alias java14='export JAVA_HOME=$JAVA_14_HOME'
# default to Java 14
java14

6 – Reload .bash_profileof .zshrcvoor de aliassen om effect te hebben:

$ source ~/.bash_profile

of

$ source ~/.zshrc

7 – Eindelijk kunt u de aliassen gebruiken om te schakelen tussen verschillende Java-versies.

$ java8
$ java -version
java version "1.8.0_261"

Voor meer informatie kun je dit bericht bekijken: Hoe Brew te gebruiken om Java op Mac te installeren


Antwoord 22

Als je fish gebruikt en mac en je wilt kunnen schakelen tussen JDK’s, dan werkt het onderstaande voor mij op mac.

@kenglxn’s antwoord werkte niet voor mij en ik kwam erachter dat bcos niet -g heeft ingesteld, wat globaal is!

Zet hieronder onder ~/.config/fish/config.fish

alias j8="jhome  -v 1.8.0_162"
alias j9="jhome  -v 9.0.1"
function jhome
    set -g -x JAVA_HOME (/usr/libexec/java_home $argv)
    echo "JAVA_HOME:" $JAVA_HOME
    echo "java -version:"
    java -version
end
funcsave jhome

Om te weten welke versie/minor-versie u hebt geïnstalleerd, kunt u het volgende doen:

/usr/libexec/java_home -V                                                                              579ms  Wed 14 Feb 11:44:01 2018
Matching Java Virtual Machines (3):
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_162, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
    1.8.0_121, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

Antwoord 23

Als je meerdere versies hebt en je wilt iets draaien met een specifieke versie, gebruik dan dit voorbeeld:

/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar

Antwoord 24

Voorheen gebruikte ik aliassen in .zshrc om gemakkelijk tussen versies te wisselen, maar tegenwoordig gebruik ik SDKMAN.
SDKMAN kan ook de standaard Java-versie voor het systeem instellen en nieuwe Java-versies downloaden en installeren.

Zodra sdkman is geïnstalleerd, kunt u opdrachten uitvoeren die vergelijkbaar zijn met wat mogelijk is met de nvm-tool voor het afhandelen van knooppuntversies.

sdk list javageeft een overzicht van de java-versies die beschikbaar zijn op uw systeem en die ook online beschikbaar zijn voor installatie, inclusief hun identifier die u kunt gebruiken in de sdk use, sdk defaulten sdk installcommando’s.

bijv. om Amazon Corretto 11.0.8 te installeren en te vragen of dit de nieuwe standaard moet zijn, doe dit:
sdk install java 11.0.8-amzn

Een functie die ik ook regelmatig gebruik, is het bestand .sdkmanrc.
Als u dat in een map op uw computer plaatst en de opdracht sdk envin de map uitvoert, kunt u de toolversies configureren die alleen in die map worden gebruikt. Het is ook mogelijk om automatisch versies van de sdkman switch tool te maken met behulp van de sdkman_auto_env=trueconfiguratie.

sdkman ondersteunt ook andere tools voor de JVM, zoals gradle, kotlin, maven en meer.

Ga voor meer informatie naar https://sdkman.io/usage#env


Antwoord 25

Hier is hoe ik het doe op mijn Linux(Ubuntu / Mint mate), ik denk dat Mac het op dezelfde manier kan doen.


Installeer & configuratie

Stappen:

  • [Basis – deel]
  • Download jdk (het .tgz-bestand)met de hand.
  • Decomprimeren & hernoem correct, op een juiste locatie.
    bijv. /mnt/star/program/java/jdk-1.8
  • Maak een zachte link, die later wordt gewijzigd om van Java-versie te wisselen.
    bijv. ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
    Dus /mnt/star/program/java/javais de zachte link.
  • Stel java_homein een startscript in.
    Zou een bestand als /etc/profile.d/eric.shkunnen gebruiken, of gewoon ~/.bashrc.
    bijv. JAVA_HOME=/mnt/star/program/java/java
  • Open vervolgens een nieuwe bash-shell. java -versionzou de java-versie moeten afdrukken.
  • [Meer versie – deel]
  • Download & installeer indien nodig meer Java-versie, vergelijkbaar met bovenstaande stappen.
    bijv.
    /mnt/star/program/java/jdk-11
  • [Schakelaar – deel]
  • Definieer in ~/.bashrceen variabele voor verschillende Java-versies.
    bijv.
    _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
    _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
    # dir of default version,
    _E_JAVA_HOME_D=$_E_JAVA_HOME_8
  • Definieer in ~/.bashrcde opdracht om van Java-versie te wisselen.
    bijv.
    ## switch java version,
    alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
    alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
    # default java version,
    alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
    alias jv="java -version"
  • In terminal, source ~/.bashrcom de wijzigingen door te voeren.
  • Dan zou kunnen schakelen met behulp van de gedefinieerde commando’s.

Opdrachten – van bovenaf config

Opdrachten:

  • jv11
    Overschakelen naar Java 11
  • jv8
    Overschakelen naar Java 8
  • jvd
    Schakel over naar de standaard Java-versie, die wordt aangeduid met _E_JAVA_HOME_Dhierboven gedefinieerd.
  • jv
    Java-versie weergeven.

Voorbeelduitvoer:

eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
eric@eric-pc:~$ 

Mechanisme

  • Het schakelt door de zachte link te wijzigen, die wordt gebruikt als java_home.

Tips

  • Als ik jdk handmatig installeer, bewaar ik de secundaire versie op mijn computer en maak ik een zachte koppeling met de hoofdversie, maar zonder de secundaire versie.
    bijv.
    // dit is de werkelijke map,
    jdk1.8.0_191

    // dit is een zachte link naar jdk1.8.0_191
    jdk-8

    // dit is een zachte link naar jdk-8of jdk-11
    java

  • Ik definieer een commando-alias in ~/.bashrc, maar definieer de variabele in een apart bestand.
    Ik gebruik ~/.eric_varom de variabelen te definiëren, en ~/.bashrczal het sourcen (bijv. source $HOME/.eric_var) .


Antwoord 26

Een gemakkelijke manier om een afzonderlijk geïnstalleerde JDK op te nemen in de lijst gegeven door /usr/libexec/java_home -Vis door de directory als volgt te symboliseren:

sudo ln -s path/to/jdk /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk

Als u bijvoorbeeld de JDK wilt registreren die bij Android Studio wordt geleverd (1.8.0_152 op het moment van schrijven), gebruikt u:

sudo ln -s /Applications/Android\ Studio.app/Contents/jre/jdk /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk

Nu zal java_homede JDK weergeven onder Matching Java Virtual Machinesen u kunt deze selecteren zoals hierboven beschreven.


Antwoord 27

Ik gebruik deze fish-functie Ik schreef:

function javav
  set min_version 8
  set max_version 99
  set java_home_cmd '/usr/libexec/java_home 2>/dev/null --failfast --version'
  if ! test (eval $java_home_cmd $argv)
    echo "Version not found"
    return 1
  end
  for current_version in (seq $min_version $max_version)
    set path_to_remove (eval $java_home_cmd $current_version)
    if ! test -z $path_to_remove
      echo 'Removing' $path_to_remove 'from PATH'
      set PATH (string match --invert $path_to_remove/bin $PATH)
    end
  end
  echo 'Setting up env for Java' $argv
  set -x JAVA_HOME (eval $java_home_cmd $argv)
  set PATH $JAVA_HOME/bin $PATH
end

Het automatiseert in feite de stap in dit antwoord , op dezelfde manier als deze , maar ook voor het instellen van het pad.

Zet het gewoon in .config/fish/functions/en gebruik het dan zoals deze:

javav 11 # Sets to Java 11
javav 16 # Sets to Java 16

28

Te eenvoudig oplossingen: wat een hoofdpijn – dit was een snelle eenvoudige oplossing die voor mij werkte.

Mac OS SIERRA Versie 10.12.13

  1. Gebruik de sneltoetsen: CMD + SHIFT + G – Type in “/ Library /”

  2. Zoek de Java-map

  3. Klik met de rechtermuisknop op Java map = Verplaats naar Prullenbak (wachtwoord vereist)

  4. installeren:
    Java SE Development Kit 8 JDK-8U131-MACOSX-X64.DMG | Download Javascript SDK

  5. Controleer of de nieuwe Java-map in / Library /
  6. verschijnt

  7. Installeer Eclipse | Installeer Eclipse IDE voor Java-ontwikkelaars
  8. giek gedaan

Other episodes