web-dev-qa-db-fra.com

Comment définir l'installation/le runtime Java (Windows) par défaut?

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.

44
Stephen

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.

40
nbeyer

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.

6
Jörn Guy Süß

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)
2
Betlista

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.

1
John Mikic

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.


Comment le régler:

  1. Téléchargez junction et assurez-vous de le mettre dans votre variable d'environnement PATH
  2. Définissez votre environnement de la manière suivante: - PATH pointant vers UNIQUEMENT vers ce jre c:\tools\Java\default\bin - Java_HOME pointant vers `c:\tools\Java\default
  3. Stockez tous vos jre-s dans un dossier comme (si vous le faites dans votre dossier Programmes), vous risquez de rencontrer des fichiers
    • 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 cd à C:\tools\Java\ 
  5. Exécuter 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.batset_jdk7.bat

Comme suggéré par @ СӏаџԁеМаятіи

EDIT: A partir de Windows Vista, vous pouvez utiliser mklink /J default JRE_1.8

0
snovelli

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.

0
PhiLho

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
0
ndtc