Comment définir ou modifier la version par défaut de Java (JDK) sous OS X?

781

Comment pouvez-vous changer la version par défaut de Java sur un Mac?

Venkat
la source
2
qu'est-ce que l'exécution /usr/libexec/java_homevous dit?
Bart
2
/ usr / libexec / java_home renvoie /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Venkat
Il se peut que vous ayez juste besoin de redémarrer. As-tu essayé ça?
Bart
Yep a redémarré l'ordinateur et le terminal ... aucun changement.
Venkat
3
Pourriez-vous s'il vous plaît accepter la réponse très votée de @markhellewell ci-dessous? Cela m'aurait aidé à le trouver un peu plus vite, et c'est juste sympa. :)
Taytay

Réponses:

1410

Première exécution /usr/libexec/java_home -Vqui produira quelque chose comme ceci:

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

Choisissez la version que vous souhaitez être la valeur par défaut ( 1.6.0_65-b14-462pour les arguments), puis:

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

ou vous pouvez spécifier uniquement la version principale, comme:

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

Maintenant, quand vous courrez, java -versionvous verrez:

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)

Ajoutez la export JAVA_HOME…ligne au fichier init de votre shell.

Pour Bash (comme indiqué par antonyh ):

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

Pour le poisson (comme indiqué par ormurin)

set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)
Markhellewell
la source
2
@ MattO'Brien c'est quelque chose qui dépend du shell que vous utilisez, et de la configuration que vous avez en place, donc je ne peux pas donner une solution complète pour cela…
markhellewell
11
ce sont vraiment des accents graves de la exportligne
David Ouest
6
Cela n'a pas fonctionné pour moi. Prenez le chemin de courir java_home -V et l' ajouter à la commande d'exportation, comme cette exportation JAVA_HOME = "/ System / Library / Java / JavaVirtualMachines / 1.6.0.jdk / Contenu / Accueil"
Oden
68
Cela fonctionne dans Bash - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- notez également que java_home permet des correspondances partielles afin que vous n'ayez pas à inclure la version complète car elle trouvera la dernière installée. Cela facilite les mises à jour.
antonyh
15
Assurez-vous que vous utilisez `` non '' pour l'exportation.
blizzard du
410

Cette réponse est une tentative d'aborder: comment contrôler la version java à l'échelle du système (pas seulement dans le shell en cours d'exécution) lorsque plusieurs versions de JDK sont installées à des fins de développement sur macOS El Capitan ou plus récent (Sierra, High Sierra, Mojave) . Pour autant que je sache, aucune des réponses actuelles ne le fait (*).

En tant que développeur, j'utilise plusieurs JDK et je souhaite passer facilement de l'un à l'autre. Habituellement, j'ai la dernière version stable pour une utilisation générale et d'autres pour les tests. Mais je ne veux pas que le système (par exemple lorsque je démarre mon IDE) utilise la dernière version "Early Access" que j'ai pour l'instant. Je veux contrôler le défaut du système, et cela devrait être le dernier stable.

L'approche suivante fonctionne avec Java 7 à 12 au moins (accès anticipé au moment d'écrire ces lignes ), avec Oracle JDK ou OpenJDK (y compris les builds par AdoptOpenJDK produits après la mi-octobre 2018 ).

Solution sans outils tiers:

  • laissez tous les JDK à leur emplacement par défaut, sous /Library/Java/JavaVirtualMachines. Le système choisira la version la plus élevée par défaut.
  • Pour exclure un JDK d'être sélectionné par défaut, renommez-le Contents/Info.plistenInfo.plist.disabled . Ce JDK peut toujours être utilisé lorsqu'il $JAVA_HOMEpointe dessus, ou référencé explicitement dans un script ou une configuration. Il sera simplement ignoré par la javacommande du système .

Le lanceur système utilisera le JDK avec la version la plus élevée parmi ceux qui ont un Info.plistfichier.

Lorsque vous travaillez dans un shell avec un autre JDK, choisissez votre méthode parmi les réponses existantes ( jenv, ou des alias / scripts personnalisés /usr/libexec/java_home, etc.).


Détails de l'enquête dans cet essentiel .


(*) Les réponses actuelles sont soit obsolètes (ne sont plus valables pour macOS El Capitan ou Sierra), soit ne concernent qu'un seul JDK, ou ne traitent pas l'aspect à l'échelle du système. Beaucoup expliquent comment changer $JAVA_HOME, mais cela n'affecte que le shell actuel et ce qui est lancé à partir de là. Cela n'affectera pas une application démarrée à partir du lanceur de système d'exploitation (sauf si vous modifiez le bon fichier et la déconnexion / connexion, ce qui est fastidieux). Idem pour jenv, c'est cool et tout, mais pour autant que je sache, cela change simplement les variables d'environnement, donc il a la même limitation.

Hugues M.
la source
16
C'est la réponse que je cherchais, car je ne suis jenvpas en JAVA_HOMEmesure de définir la version Java à l'échelle du système, c'est-à-dire celle qu'Eclipse utiliserait.
Giovanni Lovato
3
@Rodrigo Oui, comme mentionné dans "Détails de l'enquête" (lié ci-dessus): "L'installation d'un JDK écrase également /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/. Apparemment, c'est celui que le nouveau volet Préférences lancera - c'est la seule exception que j'ai trouvée à ma solution: que thingy utilisera toujours JDK9 (le dernier que j'ai installé), mais aucune autre application Java ne le fait. "
Hugues M.
2
Il convient de noter que les versions java se trouvent dans / Library / Java / JavaVirtualMachines, et que l'excellente solution de travail ci-dessus se trouve dans ce contexte.
Andrew Kostka
3
Exactement, c'est la meilleure solution et la plus fonctionnelle pour cette question. Malheureusement.
Aerodynamika
3
Je ne vous remercierai jamais assez pour cette réponse. Cette application fixe de lancement à partir du lanceur OS.
Karthic Raghupathi
248

En ajoutant aux réponses ci-dessus, j'ai mis les lignes suivantes dans mon .bash_profile(ou .zshrcpour MacOS 10.15+) ce qui le rend vraiment pratique pour changer (y compris le commentaire de @ elektromin pour 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"

Après l'insertion, exécutez $ source .bash_profile

Je peux passer à Java 8 en tapant ce qui suit:

$ 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)
Justin Zhang
la source
5
Voici la syntaxe pour Java 9: alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
elektromin
3
Des alias simples impressionnants pour une commutation rapide.
gbonetti
Utiliser alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"puis taper j10vous permet de revenir à la version actuelle de Java (dans mon cas Java 10)
intagli
Je ferais un outil cli similaire à nvmpour changer de version Java, mais l'acronyme jvmsignifie déjà autre chose :)
Andy
Je reçois cette erreur lors de l'approvisionnement: /Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
cosbor11
56

Une petite fonction poisson basée sur / 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

Si vous n'utilisez pas de poisson, vous pouvez faire quelque chose de similaire en bash:

#!/bin/bash

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

Ensuite, pour basculer entre les javas, procédez comme suit:

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

réf: https://gist.github.com/kenglxn/1843d552dff4d4233271

kenglxn
la source
1
cela ne change que pour la session de terminal spécifique. Existe-t-il un moyen de le mettre à jour pour le modifier à l'échelle du système?
ENG618
1
J'ai dû écrire à la export JAVA_HOME=(/usr/libexec/java_home $argv)place de la deuxième ligne de votre jhomefonction.
Daniel AA Pelsmaeker
32

C'est un peu délicat, mais essayez de suivre les étapes décrites dans Installation de Java sur OS X 10.9 (Mavericks) . Fondamentalement, vous devrez mettre à jour votre alias java.

Pas à pas:

Après avoir installé JDK 1.7, vous devrez faire le sudo ln -snfafin de changer le lien en courant java. Pour ce faire, ouvrez Terminal et exécutez la commande:

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

Notez que le répertoire jdk1.7.0_51.jdkpeut changer en fonction de la version du SDK que vous avez installée.

Maintenant, vous devez définir JAVA_HOMEpour pointer vers où a jdk_1.7.0_xx.jdkété installé. Ouvrez à nouveau le terminal et tapez:

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

Vous pouvez ajouter la export JAVA_HOMEligne ci-dessus dans votre .bashrcfichier pour avoir java en permanence dans votre Terminal

Trein
la source
1
comment définir la variable JAVA_HOME? y a-t-il un endroit particulier où je l'ai installé?
Venkat
où est-ce que j'exporte JAVA_HOME? et où cela sera-t-il sauvé?
Venkat
1
J'ai mis à jour la réponse. Connaissez-vous la version du SDK que vous avez installée? Le nom du dossier prend le numéro de version du SDK, donc les commandes ci-dessus peuvent changer un peu.
Trein
J'ai installé le dernier, je pense qu'il est 51.
Venkat
La variable JAVA_HOMEsera exportée sur la session Terminal en cours. Vous pouvez l'ajouter à notre .bashrcsi vous le souhaitez. J'adapterai les commandes à la dernière version.
Trein
32

Utiliser jenv est un moyen simple.

1. installez jenv

    curl -s get.jenv.io | frapper

2.Config jenv

    cd ~ / .jenv / candidats /
    mkdir java
    cd java
    mkdir 1.7
    mkdir 1.8

3.Lier le chemin jdk

    ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~ / .jenv / candidats / java / 1.7
    ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~ / .jenv / candidats / java / 1.8

4.Vous êtes prêt

commande de commutation:

jenv use java 1.8

définir par defaut:

jenv default java 1.7

Yuantao
la source
Solution propre et agréable.
pinturic
Au lieu de "jenv use java 1.8", j'ai dû utiliser "jenv shell 1.8". "shell" peut également être "global" ou "local" selon les besoins.
Steve Gelman
1
jenv est sympa quand ça marche. Je le déconseille cependant, car il ne change pas "vraiment" la version par défaut de Java utilisée, évidente en exécutant la commande "/ usr / libexec / java_home -V", seulement JAVA_HOME. Cela provoque des problèmes étranges avec certaines applications, par exemple Eclipse.
Simon
En plus, cette partie paranoïaque de moi suggère de ne rien courber. Même si vous pensez que le site est fiable, personne ne peut vous garantir qu'il est piratable. Utilisez le gestionnaire de packages de votre système d'exploitation.
Aleksandr Kravets
Cette information est obsolète. Consultez la documentation officielle ou des instructions plus détaillées .
fabianopinto
28

installer JDK, pas seulement JRE

/usr/libexec/java_home -v 1.8

donne

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

suivant

touch .bash_profile

open -a TextEdit.app .bash_profile

TextEdit vous montrera une page vierge que vous pourrez remplir.

ajouter au doc: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

dans le terminal:

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

essayez la commande:

javac -version

devrait produire:

javac 1.8.0_111
user2708060
la source
26

tl; dr

Ajoutez la ligne:

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

au dossier

~/.bash_profile

(remplacez jdk1.8.0_144.jdk par votre version téléchargée)

puis source ~/.bash_profile

dustinevan
la source
22

Utilisez jenv, c'est comme un gestionnaire d'environnement Java. Il est super facile à utiliser et à nettoyer

Pour Mac, suivez les étapes:

brew install jenv

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

Installation: si vous utilisez bash, procédez comme suit:

$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile

echo 'eval "$(jenv init -)"' >> ~/.bash_profile

$ exec $SHELL -l

Ajoutez les versions souhaitées de JVM à 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

Vérifiez les versions installées:

jenv versions

Définissez la version Java que vous souhaitez utiliser:

jenv global oracle64-1.6.0
slal
la source
Cela a fonctionné parfaitement pour moi, merci!
Fernando Gabrieli
J'utilise un outil similaire: sdkman.io/usage - IMHO approche bien meilleure que les alias manuels, etc.
SathOkh
12
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
}

mettre dans votre ~ / .profile et de l' utiliser dans votre terminal comme si setjdk 1.8, setjdk 1.7, setjdk 9etc etc ...

Si vous n'en avez pas, removeFromPathc'est:

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

Gabriel Reiser
la source
12

Quatre étapes faciles à l'aide du terminal pour les personnes qui utilisent le processus par défaut .. :)

  1. echo $JAVA_HOMEvous donne la maison java actuelle. Par exemple:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/

  2. cd /Library/Java/JavaVirtualMachines/ vous amènera dans le dossier où vous installez normalement jdks (cela peut être différent pour vos machines)

  3. lsDes spectacles dossiers disponibles (normalement il aura les numéros de version, pour par exemple: jdk1.8.0_191.jdk openjdk-11.0.2.jdk)
  4. export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home' va changer la maison java ..
Abbin Varghese
la source
8

ajouter la commande suivante au ~/.zshenvfichier

export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 
xsilen T
la source
8

macOS El Capitan ou plus récent choisira la version supérieure du JDK disponible dans /Library/Java/JavaVirtualMachines, afin de rétrograder, vous pouvez renommer le fichier Info.plisten quelque chose de similaire Info.plist.disabledafin que le système d'exploitation choisisse une version précédente.

Joaquín L. Robles
la source
Le moyen le plus simple de (: Merci
Satheesh Srinivasan
6

Depuis la page de manuel officielle java_home (1) d' Apple :

**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`
Antonio
la source
6

Si vous n'êtes toujours pas en mesure de le régler. en utilisant cette commande.

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

alors vous devez utiliser celui-ci.

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

cela fonctionnera sûrement.

RohitKumar
la source
6

Découvrez d'abord où stockez-vous les variables d'environnement-

  1. emacs
  2. bash_profile
  3. fichier zshrc

Étapes pour configurer la variable d'environnement: -

  1. Téléchargez le jdk depuis JAVA
  2. installez-le en double-cliquant
  3. Maintenant, configurez les variables d'environnement dans votre fichier

    une. Pour emacs.profile, vous pouvez utiliser ce lien OU voir la capture d'écran ci-dessous

entrez la description de l'image ici

b. Pour la configuration du profil ZSH -

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)

Maintenant, vous pouvez facilement mettre à niveau ou dégrader la version JAVA.

Vrushali Raut
la source
5

Script de commutateur JDK

J'ai adapté la réponse de @Alex ci-dessus et écrit ce qui suit pour corriger le code de Java 9.

$ 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;
}

Passer à 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)

Passer à 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)
Marcello de Sales
la source
4

Vous pouvez l'ajouter à votre .bash_profile pour que la version soit définie par défaut.

//Open bash profile
open ~/.bash_profile

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

// run bash profile
source ~/.bash_profile
Amin Agha
la source
Merci! À noter, vous devez inclure les `marques. et évidemment, remplacez 1.8 par la version dont vous pourriez avoir besoin. Dans mon cas 13.0.2
Jamie S
3

Si vous utilisez du poisson et que vous utilisez un Mac et que vous souhaitez pouvoir basculer entre les JDK, alors ci-dessous fonctionne pour moi sur Mac.

La réponse de @ kenglxn n'a pas fonctionné pour moi et j'ai compris que bcos n'avait pas défini -g qui est global!

Mettez ci-dessous sous ~ / .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

Pour savoir quelle version / version mineure vous avez installée, vous pouvez faire:

/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
Gob00st
la source
2

Si vous avez plusieurs versions et que vous souhaitez exécuter quelque chose en utilisant une version spécifique, utilisez cet exemple:

/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar
MonstroDev
la source
2

Sur la base de la réponse @markhellewell, j'ai créé quelques fonctions d'alias qui le feront pour vous. Ajoutez-les simplement à votre fichier de démarrage du shell

#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"; 
  export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; 
  java -version; 
}

https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4

Alex
la source
2

Voici comment je le fais sur mon Linux (Ubuntu / Mint mate) , je suppose que Mac peut le faire de la même manière.


Installer et configurer

Pas:

  • [Basique - partie]
  • Téléchargez jdk (le fichier .tgz ) à la main.
  • Décompressez et renommez correctement, à un emplacement approprié.
    par exemple /mnt/star/program/java/jdk-1.8
  • Créez un lien logiciel, qui sera modifié pour changer de version java plus tard.
    par exemple , ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
    ainsi /mnt/star/program/java/javaest le lien doux.
  • Situé JAVA_HOMEdans un script de démarrage.
    Pourrait utiliser un fichier comme /etc/profile.d/eric.sh, ou simplement utiliser ~/.bashrc.
    par exempleJAVA_HOME=/mnt/star/program/java/java
  • Ouvrez ensuite un nouveau shell bash. java -versiondevrait imprimer la version java.
  • [Plus de version - partie]
  • Téléchargez et installez plus de version Java, au besoin, similaire aux étapes ci-dessus.
    par exemple
    /mnt/star/program/java/jdk-11
  • [Switch - partie]
  • Dans ~/.bashrc, définissez une variable pour différentes versions de Java.
    par exemple
    _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
  • Dans ~/.bashrc, définissez la commande pour changer de version Java.
    par exemple
    ## 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"
  • Dans le terminal, source ~/.bashrcpour que les modifications prennent effet.
  • Ensuite, pourrait basculer en utilisant les commandes définies.

Commandes - de la configuration ci-dessus

Commandes:

  • jv11
    Passer à Java 11
  • jv8
    Passer à Java 8
  • jvd
    Basculez vers la version Java par défaut, indiquée par la _E_JAVA_HOME_Ddéfinition ci-dessus.
  • jv
    Afficher la version java.

Exemple de sortie:

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:~$ 

Mécanisme

  • Il change en changeant le lien logiciel, qui est utilisé comme JAVA_HOME.

Conseils

  • Sur ma machine lors de l'installation de jdk à la main, je garde la version mineure, puis fais un lien logiciel avec la version majeure mais sans la version mineure.
    par exemple
    // c'est le répertoire réel,
    jdk1.8.0_191

    // c'est un lien logiciel vers jdk1.8.0_191
    jdk-8

    // c'est un lien logiciel vers jdk-8oujdk-11
    java

  • Je définis l'alias de commande dans ~/.bashrc, mais je définis la variable dans un fichier séparé.
    J'utilise ~/.eric_varpour définir les variables et ~/.bashrcje les fournirai (par exemple source $HOME/.eric_var).

Eric Wang
la source
1

Un moyen simple d'inclure un JDK installé séparément dans la liste donnée par /usr/libexec/java_home -Vest de créer un lien symbolique vers le répertoire comme suit:

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

Par exemple, pour enregistrer le JDK inclus avec Android Studio (1.8.0_152 au moment de la rédaction), utilisez:

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

Maintenant java_home, listera le JDK sous Matching Java Virtual Machineset vous pouvez le sélectionner comme décrit ci-dessus.

friederbluemle
la source
1

Je l'ai fait pour le terminal local avec

export JAVA_8_HOME=(/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/)
export JAVA_13_HOME=(/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/)

alias java8='export JAVA_HOME=$JAVA_8_HOME; alias java="$JAVA_8_HOME/bin/java"; $JAVA_8_HOME/bin/java -version'
alias java13='export JAVA_HOME=$JAVA_13_HOME; alias java="$JAVA_13_HOME/bin/java"; $JAVA_13_HOME/bin/java -version'

export JAVA_HOME=$JAVA_13_HOME
Trackhe
la source
-6

SOLUTION TROP FACILE: Quel mal de tête - c'était une solution rapide et facile qui a fonctionné pour moi.

Mac OS Sierra version 10.12.13

  1. Utilisez les touches de raccourci: CMD + MAJ + G - tapez "/ Bibliothèque /"

  2. Trouvez le dossier JAVA

  3. Clic droit sur le dossier Java = Déplacer vers la corbeille (mot de passe requis)

  4. Installer: Kit de développement Java SE 8 jdk-8u131-macosx-x64.dmg | Télécharger le SDK Javascript

  5. Assurez-vous que le nouveau dossier JAVA apparaît dans / LIBRARY /
  6. Installez Eclipse | Installer Eclipse IDE pour les développeurs Java
  7. Boom Done
eric323
la source