Je suis dans la situation où j'ai installé le JDK, mais je ne peux pas exécuter d'applets dans les navigateurs (je n'ai peut-être pas installé le JRE).
Cependant, lorsque j'installe le JRE, mon JDK est le runtime par défaut. Cela casse presque tout (Eclipse, Ant) - car ils nécessitent une machine virtuelle Java.
Il n'y a pas de variable d'environnement Java_HOME
ces jours-ci - il semble simplement utiliser une magie de registre (la définition du chemin système n'est d'aucune utilité). Auparavant, je venais de désinstaller le JRE après l'avoir utilisé pour restaurer le JDK. Cette fois, je veux le réparer correctement.
Cela se manifeste également avec jre autoupdater - jadis, j’avais une configuration de travail avec JDK et JRE, mais elle a tout mis à jour.
C'est un peu pénible pour Windows. Voici ce que je fais.
Installez le dernier JDK Sun, par exemple. 6u11 , dans le chemin d'accès comme c:\install\jdk\Sun\6u11
, puis laissez le programme d'installation installer le JRE public à l'emplacement par défaut (c:\program files\blah
). Ceci configurera votre JRE par défaut pour la majorité des choses.
Installez les anciens JDK si nécessaire, comme 5u18 dans c:\install\jdk\Sun\5u18
, mais n'installez pas les JRE publics.
En cours de développement, j’utilise un petit fichier de commandes que j’utilise pour configurer une invite de commande pour chaque version du JDK. Essentiellement, définissez simplement Java_HOME=c:\jdk\Sun\JDK_DESIRED
, puis PATH=%Java_HOME%\bin;%PATH%
. Cela placera le JDK souhaité en premier dans le chemin et tout outil secondaire comme Ant ou Maven peut utiliser la variable Java_HOME
.
Le chemin est important car la plupart des installations JRE publiques placent un exécutable lié à c:\WINDOWS\System32\Java.exe
, généralement remplace la plupart des autres paramètres.
J'ai corrigé le comportement de mon raccourci de démarrage Eclipse dans la boîte de dialogue des propriétés
de
"E:\Program Files\Eclipse\eclipse.exe"
à
"E:\Program Files\Eclipse\eclipse.exe" -vm "E:\Program Files\Java\jdk1.6.0_30\bin"
comme décrit dans la documentation Eclipse
Ce n'est qu'un patch, car cela dépend du raccourci pour corriger les choses ...
L'alternative consiste à définir le paramètre de manière permanente dans le fichier d'initialisation Eclipse.
Je viens d'avoir ce problème (Java 1.8 vs Java 9 sur Windows 7) et mes conclusions sont les suivantes:
version courte
défaut semble être (à cause de l'entrée de chemin)
c:\ProgramData\Oracle\Java\javapath\Java -version
sélectionnez la version de votre choix (test, utilisez l'onglet complétant dans cmd, ne sachant pas ce que ces chiffres représentent), j'avais 2 options, voir version plus longue pour plus de détails
c:\ProgramData\Oracle\Java\javapath_target_[tab]
supprimer la jonction/lien et lien vers votre version (celle se terminant par 181743567 dans mon cas pour Java 8)
rmdir javapath
mklink /D javapath javapath_target_181743567
version plus longue:
Réinstallez Java 1.8 après que Java 9 ne fonctionne pas. Les séquences d'installation étaient jdk1.8.0_74, jdk-9.0.4 et tentaient de rendre Java 8 par défaut avec jdk1.8.0_162 ...
Après l'installation de jdk1.8.0_162, j'ai encore
Java -version
Java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
Ce que je vois dans le chemin est
Path=...;C:\ProgramData\Oracle\Java\javapath;...
Alors j'ai vérifié ce que c'est et j'ai trouvé que c'était une jonction (lien)
c:\ProgramData\Oracle\Java>dir
Volume in drive C is OSDisk
Volume Serial Number is DA2F-C2CC
Directory of c:\ProgramData\Oracle\Java
2018-02-07 17:06 <DIR> .
2018-02-07 17:06 <DIR> ..
2018-02-08 17:08 <DIR> .Oracle_jre_usage
2017-08-22 11:04 <DIR> installcache
2018-02-08 17:08 <DIR> installcache_x64
2018-02-07 17:06 <JUNCTION> javapath [C:\ProgramData\Oracle\Java\javapath_target_185258831]
2018-02-07 17:06 <DIR> javapath_target_181743567
2018-02-07 17:06 <DIR> javapath_target_185258831
Ces hashs ne me disent rien, mais quand j’ai vérifié
c:\ProgramData\Oracle\Java\javapath_target_181743567>.\Java -version
Java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
c:\ProgramData\Oracle\Java\javapath_target_185258831>.\Java -version
Java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
donc pour faire à nouveau par défaut Java 8 je devais supprimer le lien comme décrit ici
rmdir javapath
et recréer avec Java je voulais
mklink /D javapath javapath_target_181743567
testé:
c:\ProgramData\Oracle\Java>Java -version
Java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
** mise à jour (Java 10) **
Avec Java 10, il est similaire, seul javapath est dans c:\Program Files (x86)\Fichiers communs\Oracle\Java \, ce qui est étrange lorsque j’ai installé IMHO 64 bits
.\Java -version
Java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
J'installe simplement toutes les versions de JDK dont j'ai besoin et la dernière version installée devient la configuration par défaut. Je réinstalle donc celle que je souhaite par défaut si nécessaire.
Après plusieurs tentatives, j'ai trouvé l'approche de la jonction plus pratique. Ceci est très similaire sur la façon dont ce problème est résolu sous Linux.
Cela consiste essentiellement à avoir un lien entre c:\tools\Java\default
et la version réelle de Java que vous souhaitez utiliser par défaut sur votre système.
PATH
pointant vers UNIQUEMENT vers ce jre c:\tools\Java\default\bin
- Java_HOME
pointant vers `c:\tools\Java\defaultC:\tools\Java\JRE_1.6
C:\tools\Java\JRE_1.7
C:\tools\Java\JRE_1.8
C:\tools\Java\
junction default JRE_1.6
Cela créera une jonction (qui ressemble plus ou moins à un lien symbolique sous Linux) entre C:\tools\Java\default
et C:\tools\Java\JRE_1.6
De cette façon, vous aurez toujours votre Java par défaut dans c:\tools\Java\default
.
Si vous devez ensuite modifier votre version par défaut de Java pour la version 1.8, vous devez simplement exécuter
junction -d default
junction default JRE_1.8
Ensuite, vous pouvez avoir des fichiers de commandes pour le faire sans invite de commande comme set_jdk8.bat
set_jdk7.bat
Comme suggéré par @ СӏаџԁеМаятіи
mklink /J default JRE_1.8
J'ai plusieurs JDK (1.4, 1.5, 1.6) installés dans C:\Java
avec leurs JRE. Ensuite, je laisse Sun mettre à jour le JRE public dans C:\Program Files\Java
.
Dernièrement, il y a une amélioration, l'installation dans jre6. Auparavant, il y avait un dossier différent pour chaque nouvelle version (1.5.0_4, 1.5.0_5, etc.), ce qui prenait beaucoup de place.
une méthode modifiable pour exécuter une application .jar consiste à créer une cmd .bat pour elle . Par exemple, jre10 et jre8 sont installés sur votre ordinateur et jre10 est votre jre par défaut . travailler avec jre8, cmd suivant fonctionnera:
"C:\Program Files\Java\jre1.8.0_181\bin\Java.exe" -jar JabRef-4.3.1.jar