Je souhaite faire de la programmation avec le dernier JavaFX, qui nécessite Java 8. J'utilise IntelliJ 13 CE et Mac OS X 9 Mavericks. J'ai exécuté le programme d'installation Java 8 d'Oracle, et les fichiers ont l'air d'être
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk
mais les versions précédentes sont à
/System/Library/Java/JavaFrameworks/jdk1.6....
Vous ne savez pas pourquoi le dernier programme d'installation met ceci dans /Library
au lieu de /System/Library
(ni quelle est la différence). Mais /usr/libexec/Java_home
ne trouve pas 1.8, donc tous les articles que j'ai trouvés sur la façon de définir votre version Java actuelle ne fonctionnent pas. J'ai essayé d'ajouter un lien symbolique pour donner l'impression que 1.8 se trouve dans le chemin /System/Library...
, mais cela n'aide pas. /usr/libexec/Java_home -V
ne répertorie toujours que l'ancien Java 1.6.
Ironiquement, le panneau de configuration "Java" sous Préférences Système ne montre que Java 1.8!
Pourquoi le programme d'installation d'Oracle ne le met-il pas vraiment à jour? Et comment puis-je contourner ce problème?
Pour El Capitan , Sierra et High Sierra
Commencez par installer et mettre à jourbrewà partir du terminal:
/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew tap caskroom/versions
brew update
Java 8:
brew cask install Java8
Dernière version de Java:
brew cask install Java
Je viens de faire cela sur mon MBP, et ai dû utiliser
$ brew tap caskroom/versions
$ brew cask install Java8
afin d'obtenir Java8 à installer.
Une option que je commence à vraiment aimer pour exécuter des applications sur mon ordinateur local est d'utiliser Docker. Vous pouvez simplement exécuter votre application dans le conteneur JDK officiel, ce qui signifie que vous n'avez pas à vous soucier de tout configurer sur votre ordinateur local (ni à exécuter plusieurs versions différentes du JDK pour différentes applications, etc.).
Bien que cela ne vous aide peut-être pas à résoudre vos problèmes d’installation actuels, c’est une solution qui vous permet d’éviter les problèmes liés à l’obtention de l’exécution correcte de Java sur votre machine de développement!
Les avantages sont:
Un exemple très simple:
Créez une Dockerfile
:
FROM Java:8
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
Java:8
- pour utiliser Java 7, vous pouvez simplement spécifier: Java:7
). /usr/src/myapp
à l'intérieur du conteneurCréez un fichier docker-compose.yml
:
version: "2"
services:
Java:
build: .
volumes:
- .:/usr/src/myapp
Supposons maintenant que nous avons ce fichier Java:
HelloWorld.Java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Nous avons donc la structure de fichier suivante:
.
|_ Dockerfile
|_ docker-compose.yml
|_ HelloWorld.Java
Vous pouvez faire différentes choses en Java comme:
compiler:
docker-compose run --rm Java javac HelloWorld.Java
courir:
docker-compose run --rm Java java HelloWorld
docker-compose run
- exécute une commande depuis le conteneur-rm
indique à docker de supprimer le conteneur une fois la commande exécutéeJava
est le nom du service/conteneur (de notre fichier docker-compose) avec lequel cette commande sera exécutéeC’est une façon plutôt agréable de gérer différentes versions de Java pour différentes applications sans gâcher complètement votre configuration locale :).
Voici un exemple un peu plus complexe qui a Maven et une simple application Spring
Avertissement:
J'ai le même problème à résoudre, car je dois installer JDK8 pour exécuter Android SDK Manager (car il semble que cela ne fonctionne pas bien avec JDK9) . Cependant, je vous explique comment résoudre tous les problèmes Mac (Sierra).
Tout d’abord, vous avez besoin de brasser avec tonneau et de jenv.
brew tap caskroom/versions
brew install jenv
brew cask install Java8
(ou Java7
ou Java
si vous souhaitez installer la dernière version, jdk9)jenv versions
pour répertorier toutes les versions installées sur votre ordinateur, puis activer celle que vous souhaitez avec jenv global [JDK_NAME_OF_LIST]
.Vous pouvez trouver d'autres informations utiles ici sur ce Github Gist brew-Java-and-jenv.md , sur ce blog installer plusieurs JDK sur un Mac et sur Site Jenv
Java8 n'est plus disponible sur l'homebrew, brew install Java8
ne fonctionnera pas.
Au lieu de cela, utilisez:
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
Voir this commit pour plus de détails techniques.
Notez également que vous pouvez rencontrer des problèmes autour de Cask adoptopenjdk8 exists in multiple taps
. Il s'agit d'un problème connu, en cours de traitement, que vous pouvez voir ici:
https://github.com/AdoptOpenJDK/homebrew-openjdk/issues/106
Pour ceux qui ne veulent pas passer au travers des détails, voici un résumé:
# To install JDK8
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
# To be able to safely run 'brew cleanup'
brew untap adoptopenjdk/openjdk
brew untap caskroom/versions
brew cleanup
cask brasser installer caskroom/versions/Java8
J'ai des applications qui utilisent à la fois Java 7 et 8 et doivent aller et venir tout le temps.
J'utilise ce script écrit par Johan:
http://www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/
Vous pouvez maintenant le définir au démarrage ou appeler le script par la suite.
Installez le JDK pour Mac.
Java 7
http://www.Oracle.com/technetwork/Java/javase/downloads/jdk7-downloads-1880260.html
Java 8
http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html
Si vous avez plusieurs versions de Java sur votre machine et que vous voulez la choisir dynamiquement au moment de l’exécution, c’est-à-dire dans mon cas, j’ai deux versions:
ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x 3 root wheel 96B Nov 16 2014 jdk1.7.0_71.jdk/
drwxr-xr-x 3 root wheel 96B Mar 1 2015 jdk1.8.0_31.jdk/
Vous pouvez les changer en modifiant le contenu de /etc/profile
. Il suffit d’ajouter (ou de modifier) les deux lignes suivantes à la fin du fichier:
export Java_HOME=YOUR_Java_PATH/Contents/Home
export PATH=$Java_HOME/bin:$PATH
Dans mon cas, cela devrait ressembler à ce qui suit si je veux utiliser:
Java 7:
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$Java_HOME/bin:$PATH
Java 8:
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$Java_HOME/bin:$PATH
Après avoir sauvegardé le fichier, veuillez exécuter source /etc/profile
et cela devrait fonctionner. Voici les résultats lorsque j'utilise les première et deuxième options en conséquence:
Java 7:
Java -version
Java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java 8:
Java -version
Java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Le processus est similaire si votre dossier Java est situé à des emplacements différents.
Exécutez ces commandes sur mac High Sierra
brew update
brew tap caskroom/versions
brew cask install Java8
et vérifier avec la commande
Java -version
Le meilleur moyen est d’utiliser le gestionnaire de paquets Brew mais la commande
brew cask install Java8
échoue avec erreur:
Error: No available formula with the name "Java8"
Alors utilisez
brew cask install caskroom/versions/Java8
Comment ai-je trouvé "caskroom/versions/Java8": à l'aide de la commande de recherche de bière:
brew cask search Java8
Utilisation de la bière
brew install Caskroom/cask/Java
Hypothèse: machine Mac et vous avez déjà installé homebrew.
Installer le fût:
$ brew tap caskroom/cask
$ brew tap caskroom/versions
Pour installer la dernière version de Java:
$ brew cask install Java
Pour installer Java 8:
$ brew cask install Java8
Si vous voulez installer/gérer plusieurs versions, vous pouvez utiliser 'jenv':
Installez et configurez jenv:
$ brew install jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
Ajoutez le Java installé à jenv:
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
$ jenv add /Library/Java/JavaVirtualMachines/jdk1.11.0_2.jdk/Contents/Home
Pour voir tout le Java installé:
$ jenv versions
La commande ci-dessus donnera la liste des programmes Java installés:
* system (set by /Users/lyncean/.jenv/version)
1.8
1.8.0.202-ea
Oracle64-1.8.0.202-ea
Configurez la version Java que vous souhaitez utiliser:
$ jenv global Oracle64-1.6.0.39
Pour définir Java_HOME:
$ jenv enable-plugin export
Le moyen le plus simple -
1) brew cask install Java (No need to install cask separately it comes with brew)
2) Java -version
Java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
P.S - Qu'est-ce que le brassin de bière? Homebrew-Cask étend Homebrew et résout le problème de l'exécution d'une commande supplémentaire - “Pour installer, faites glisser cette icône…” après avoir installé une application à l'aide de Homebrew .
Il semble que personne n'ait encore mentionné le SDK man ( https://sdkman.io/ ).
SKD man permet d’installer plusieurs versions de Java sur Mac et de basculer facilement entre ces versions. Plus d'informations sont disponibles sur https://sdkman.io/usage .
Par exemple:
$ sdk list Java
================================================================================
Available Java Versions
================================================================================
* 12.ea.20-open
11.0.1-zulu
> * 11.0.1-open
10.0.2-zulu
10.0.2-open
9.0.7-zulu
9.0.4-open
8.0.192-zulu
8.0.191-Oracle
+ 8.0.181-Oracle
7.0.181-zulu
1.0.0-rc-10-grl
1.0.0-rc-9-grl
1.0.0-rc-8-grl
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
$ sdk install Java 8.0.191-Oracle
$ sdk use Java 8.0.191-Oracle
Using Java version 8.0.191-Oracle in this Shell.
$ Java -version
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)
$ sdk use Java 11.0.1-open
Using Java version 11.0.1-open in this Shell.
$ Java -version openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
```
Le plus simple consiste à télécharger le fichier dmg à partir du site suivant et à l’installer par un double clic
http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html
rechercher les machines virtuelles disponibles dans le répertoire de base
ls -al /Library/Java/JavaVirtualMachines
et mettre à jour le fichier .bash_profile avec la version appropriée
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_XXX.jdk./Contents/Home
export PATH=$Java_HOME/bin:$PATH
et enfin
source ~/.bash_profile
Si vous l'utilisezPASà des fins personnelles, vous pouvez utiliser OpenJDK à la place pour éviter toute poursuite éventuelle de la part d'Oracle.
brew cask install adoptopenjdk8
Essayez:
tonneau de bière installer Java 8 , il donnera le résultat ci-dessous
8 adoptons les adoptions pour corriger les erreurs corrigées8 icônes vmware-fusion8 x48 zulu8
Ensuite, entrez: installation du fût de bière adoptopenjdk8 ---- Java 8 sera installé sur Mac.
Je suggérerais d'utiliser l'homme du SDK qui est assez facile à changer de version (temporaire et permanente) et fournit d'autres SDK. J'utilise l'homme du SDK depuis plus d'un an maintenant.