Hoe kun je de standaardversie van Java op een mac wijzigen?
Antwoord 1, autoriteit 100%
Voer eerst /usr/libexec/java_home -V
uit, 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-462
omwille 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 -version
uitvoert, 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.plist
naarInfo.plist.disabled
. Die JDK kan nog steeds worden gebruikt wanneer$JAVA_HOME
PUNTEN NAAR ZIJN, of expliciet wordt verwezen in een script of configuratie. Het wordt eenvoudig genegeerd door dejava
van het systeem.
Systeemwerper gebruikt de JDK met de hoogste versie onder degenen die een Info.plist
bestand hebben.
Kies bij het werken in een schaal met alternatieve JDK, kiest u uw methode onder bestaande antwoorden (jenv
of 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_HOME
kunt 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 .zshrc
voor 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.
-
Installeer jenv, zie Aan de slag
-
Config jenv
cd ~/.jenv/candidates/ mkdir java cd java mkdir 1.7 mkdir 1.8
-
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
-
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 -snf
uitvoeren 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.jdk
kan veranderen, afhankelijk van de SDK-versie die je hebt geïnstalleerd.
Nu moet je java_home
zo instellen dat het verwijst naar waar jdk_1.7.0_xx.jdk
is 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_HOME
hierboven 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.. 🙂
-
echo $JAVA_HOME
geeft je het huidige Java-home. Voor bijv.:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
-
cd /Library/Java/JavaVirtualMachines/
brengt u naar de map waar u normaal gesproken jdks installeert (het kan voor uw machines anders zijn) ls
toont je beschikbare mappen (normaal heeft het de versienummers, bijvoorbeeld:jdk1.8.0_191.jdk openjdk-11.0.2.jdk
)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 9
etc etc …
Als je removeFromPath
niet 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.plist
naar iets anders zoals Info.plist.disabled
zodat 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
- 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’
- Opslaan in sessie:
$ bron .zshrc
- 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/JavaVirtualMachines
de twee volgende jdks
openjdk8u275-b01
openjdk-11.0.9.1+1
En in het bestand .bash_profile
het volgende:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.0.9.1+1/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
Als u Iterm
opent 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 –
- emacs
- BASH_PROFILE
- ZSHRC-bestand
Stappen om de omgevingsvariabele in te stellen: –
-
Download de JDK van Java
-
Installeer het op Dubbelklik
-
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_profile
of .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_profile
of .zshrc
voor 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 java
geeft 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 default
en sdk install
commando’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 env
in 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=true
configuratie.
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/java
is de zachte link. - Stel
java_home
in een startscript in.
Zou een bestand als/etc/profile.d/eric.sh
kunnen gebruiken, of gewoon~/.bashrc
.
bijv.JAVA_HOME=/mnt/star/program/java/java
- Open vervolgens een nieuwe bash-shell.
java -version
zou 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
~/.bashrc
een 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
~/.bashrc
de 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 ~/.bashrc
om 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 11jv8
Overschakelen naar Java 8jvd
Schakel over naar de standaard Java-versie, die wordt aangeduid met_E_JAVA_HOME_D
hierboven 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-8
ofjdk-11
java
-
Ik definieer een commando-alias in
~/.bashrc
, maar definieer de variabele in een apart bestand.
Ik gebruik~/.eric_var
om de variabelen te definiëren, en~/.bashrc
zal 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 -V
is 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_home
de JDK weergeven onder Matching Java Virtual Machines
en 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
-
Gebruik de sneltoetsen: CMD + SHIFT + G – Type in “/ Library /”
-
Zoek de Java-map
-
Klik met de rechtermuisknop op Java map = Verplaats naar Prullenbak (wachtwoord vereist)
-
installeren:
Java SE Development Kit 8 JDK-8U131-MACOSX-X64.DMG | Download Javascript SDK - Controleer of de nieuwe Java-map in / Library /
- Installeer Eclipse | Installeer Eclipse IDE voor Java-ontwikkelaars
- giek gedaan
verschijnt