54 votes

Comment puis-je définir l'installation/le moteur d'exécution par défaut de Java (Windows) ?

Je suis dans la situation où j'ai installé le JDK, mais je ne peux pas exécuter les applets dans les navigateurs (je n'ai peut-être pas installé le JRE).

Cependant, lorsque j'installe le JRE, il prend mon JDK comme runtime par défaut. Cela casse à peu près tout (Eclipse, Ant) - car ils nécessitent une JVM de serveur.

No hay JAVA_HOME Il semble qu'il utilise la magie du registre (la définition du chemin d'accès au système ne sert à rien non plus). Auparavant, j'ai simplement désinstallé le JRE après l'avoir utilisé pour restaurer le JDK. Cette fois, je veux le réparer correctement.

Cela se manifeste également avec le jre autoupdater - il fut un temps où j'avais une configuration fonctionnelle avec le JDK et le JRE, mais il a tout mis à jour et tout bousillé.

0 votes

Curieux ; je viens d'obtenir le badge "Question célèbre" pour cette question, et elle n'a que 5 votes positifs ? Est-ce parce que : A) ce n'est pas une bonne question ; B) les gens la trouvent accidentellement en cherchant autre chose ; C) c'est vraiment populaire sur les internets en général (non utilisateurs de SO) ; ou D) (comme toujours) "quelque chose d'autre"

47voto

nbeyer Points 644

C'est un peu difficile sous Windows. Voici ce que je fais.

Installez la dernière version de Sun JDK, par ex. 6u11 dans un chemin 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 ). Cela configurera votre JRE par défaut pour la majorité des choses.

Installez les anciens JDKs si nécessaire, comme 5u18 en c:\install\jdk\sun\5u18 mais n'installez pas les JREs publics.

Lors du développement, j'ai un petit fichier batch que j'utilise pour configurer une invite de commande pour chaque version du JDK. Essentiellement, il suffit de définir JAVA_HOME=c:\jdk\sun\JDK_DESIRED et ensuite mettre PATH=%JAVA_HOME%\bin;%PATH% . Cela placera le JDK désiré en premier dans le chemin d'accès et tout outil secondaire comme Ant ou Maven pourra utiliser l'option . JAVA_HOME variable.

Le chemin est important car la plupart des installations publiques de JRE placent un exécutable lié à l'emplacement suivant c:\WINDOWS\System32\java.exe qui, en général Remplacer la plupart des autres paramètres.

15 votes

La clé était de mettre le java/bin désiré comme première chose dans le chemin du système.

0 votes

J'avais défini java_home et le nouveau bin dans le chemin, mais ça n'a pas marché. J'ai dû réinstaller la dernière version de jre7 et ça a marché.

0 votes

Très bonne réponse détaillée, mais il manque la nouvelle meilleure pratique que java introduit concernant la commutation de l'emplacement du chemin. voir stackoverflow.com/questions/27996603 .

7voto

Jörn Guy Süß Points 21

J'ai modifié le comportement de mon raccourci de démarrage d'Eclipse dans le dialogue des propriétés.

de

"E:\Program Files\eclipse\eclipse.exe"

a

"E:\Program Files\eclipse\eclipse.exe" -vm "E:\Program Files\Java\jdk1.6.0_30\bin"

comme décrit dans la documentation d'Eclipse

C'est un patch seulement, car il dépend du raccourci pour réparer les choses...

L'alternative est de définir le paramètre de façon permanente dans le fichier d'initialisation d'eclipse.

4voto

Betlista Points 2944

Je viens d'avoir ce problème (Java 1.8 contre Java 9 sur Windows 7) et mes conclusions sont les suivantes :

version courte

La valeur par défaut semble être (à cause de l'entrée Path)

c:\ProgramData\Oracle\Java\javapath\java -version

sélectionnez la version que vous voulez (test, utilisez la tabulation en cmd, pas sûr de ce que ces chiffres représentent), j'avais 2 options, voir la version longue pour plus de détails

c:\ProgramData\Oracle\Java\javapath_target_[tab]

supprimez junction/link et créez un lien vers votre version (celle qui se termine par 181743567 dans mon cas pour Java 8)

rmdir javapath
mklink /D javapath javapath_target_181743567

version plus longue :

Réinstaller Java 1.8 après que Java 9 n'ait pas fonctionné. La séquence d'installation était jdk1.8.0_74, jdk-9.0.4 et tentative de rendre Java 8 par défaut avec jdk1.8.0_162...

Après l'installation de jdk1.8.0_162 j'ai toujours

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;...

J'ai donc vérifié ce que c'était et j'ai découvert qu'il s'agissait d'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 hachages 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 que Java 8 redevienne par défaut, j'ai dû supprimer le lien comme indiqué aquí

rmdir javapath

et recréer avec Java ce que 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 c'est similaire, seul javapath est en c : \Program Fichiers (x86) \Common Fichiers \Oracle\Java\ ce qui est étrange car j'ai installé 64-bit IMHO

.\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)

2voto

snovelli Points 52

Après de nombreuses tentatives, j'ai trouvé l'approche de la jonction plus pratique. C'est très similaire à la façon dont ce problème est résolu dans linux.

En gros, cela consiste à avoir un lien entre c:\tools\java\default et la version réelle de java que vous voulez utiliser par défaut dans votre système.


Comment le régler :

  1. Télécharger jonction et assurez-vous de le mettre dans votre PATH dans votre environnement
  2. Configurez votre environnement de cette façon : - PATH pointant vers UNIQUEMENT à cette jre c:\tools\java\default\bin - JAVA_HOME pointant vers `c : \tools\java\default
  3. Stockez tous vos jre-s dans un seul dossier (si vous le faites dans votre dossier Program FIles, vous risquez de rencontrer des problèmes de sécurité).
    • C:\tools\Java\JRE_1.6
    • C:\tools\Java\JRE_1.7
    • C:\tools\Java\JRE_1.8
  4. Ouvrez une invite de commande et accédez à C:\tools\Java\
  5. Exécuter junction default JRE_1.6

Cela créera un jonction (qui est plus ou moins comme un lien symbolique dans linux) entre C:\tools\java\default y C:\tools\java\JRE_1.6

De cette façon, vous aurez toujours votre java par défaut en c:\tools\java\default .

Si vous avez ensuite besoin de changer votre java par défaut pour la version 1.8, il vous suffit d'exécuter

junction -d default
junction default JRE_1.8 

Ensuite, vous pouvez avoir des fichiers batch pour faire cela sans l'invite de commande comme set_jdk8.bat set_jdk7.bat

Comme l'a suggéré l'auteur de la lettre

EDIT : Depuis Windows vista, vous pouvez utiliser mklink /J default JRE_1.8

1voto

John Mikic Points 76

J'installe simplement toutes les versions de JDK dont j'ai besoin et la dernière installée devient la version par défaut. Je n'ai plus qu'à réinstaller celle que je veux par défaut si nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X