web-dev-qa-db-fra.com

Différent Java version affichée sur la ligne de commande

J'ai récemment vérifié ma Java. J'ai exécuté la commande Java -version et j'ai découvert que j'utilisais Java version 1.7.0_09. Mais quand j'ai essayé de vérifier C:\Program Files\Java\ répertoire, je ne trouve pas la même version. Je ne vois que ce qui suit:

  • j2re1.4
  • jdk1.6.0_32
  • jdk1.7.0_06
  • jdk1.7.0_07
  • jre6
  • jre7

Etc...

Mes programmes fonctionnent toujours, mais j'essaie simplement de tout compiler manuellement et de comprendre comment Java est traité par le système d'exploitation.

Une autre chose étrange est que j'ai essayé de vérifier les paramètres des variables d'environnement, et cela ne dit rien sur jdk1.7.0_09.

Chemin:

  • C:\Program Files\Fichiers communs\Microsoft Shared\Windows Live;
  • % SystemRoot%\system32;
  • % SystemRoot%;
  • % SystemRoot%\System32\Wbem;
  • % SYSTEMROOT%\System32\WindowsPowerShell\v1.0 \;
  • C:\Program Files\TortoiseSVN\bin;
  • C:\Program Files\Windows Live\Shared;
  • C:\Eclipse\plugins\com.google.appengine.Eclipse.sdkbundle_1.6.5\appengine-Java-sdk-1.6.5\bin;
  • C:\Program Files\Java\jdk1.7.0_07\bin; C:\Program Files\QuickTime\QTSystem \;
  • % ANT_HOME%\bin

Je veux juste que vous sachiez que cela est devenu automatiquement un jre.

Le répertoire complet est C:\Users\User02\AppData\LocalLow\Sun\Java\jre1.7.0_09 et le fichier nommé lzma.dll.

Mais, j'ai un autre répertoire qui dit C:\Users\User02\AppData\LocalLow\Sun\Java\jdk1.7.0_07. Les fichiers qu'il contient sont:

  • jdk1.7.0_07.msi
  • sj170070.cab
  • ss170070.cab
  • st170070.cab
  • et sz170070.cab
16
Franz Noel

Il est possible d'avoir plusieurs JRE côte à côte sur un ordinateur.

Si JRE est correctement installé sur Windows, les informations sur chaque version sont stockées dans le registre. Le processus d'installation installe un Java.exe spécial dans le CHEMIN système (% SYSTEMROOT%\System32 ). Vous n'avez donc pas besoin de modifier votre PATH car ce Java.exe spécial trouvera le JRE actuel. A partir d'une ligne de commande, tapez Java -version pour afficher la version jre actuelle installée.

Avec la version 1.6, il est désormais possible de sélectionner une installation JRE différente de la dernière sans aucune modification du registre.

L'installation JRE est répertoriée dans le registre dans la clé

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

Prenez cette classe de test simple

public class ShowVersion {
 public static void main(String args[]) {
   System.out.println(System.getProperty("Java.version"));
 }
}

Sur un système, avec 1,6 et 1,5 installés. Si vous tapez

> Java ShowVersion

C'est probablement le 1.6 JRE qui sera utilisé car c'est le dernier installé.

Pour forcer le 1.5 JRE à la place, utilisez cette ligne de commande.

> Java -version:"1.5" ShowVersion

Si le bytecode est incompatible avec le JRE donné alors .. cela ne fonctionnera pas, bien sûr.

ref: note technique Java 6

Vous pouvez toujours donner le chemin complet pour utiliser une installation spécifique. Le lancement de la JVM de cette façon n'utilise pas du tout le paramètre de registre.

>"C:\Program Files\Java\j2re1.4.1_02\bin\Java" -version
Java version "1.4.1_02"

source: Sélectionnez un JRE particulier dans la ligne de commande

15
RealHowTo

L'ajout de ce qui suit résoudra votre problème:

set Java_HOME="your jdk path"
set PATH=%Java_HOME%\bin;%PATH%.

De plus, si cela ne fonctionne pas, cela signifie que vous avez défini le PATH pour plusieurs versions Java, incluez uniquement la dernière et supprimez tout des variables PATH.

3
Shashidhar

En réponse à la question "réelle":

Une autre chose étrange est que j'ai essayé de vérifier les paramètres des variables d'environnement, et cela ne dit rien sur jdk1.7.0_09.

Ce qui s'est passé ici, c'est que vous avez installé jdk1.7.0_07, puis vous l'avez mis à niveau automatiquement. Lorsque cela se produit, il utilise toujours l'ancien nom de dossier que vous avez installé à l'origine.

Après avoir installé Java, je fais généralement une copie du répertoire JDK et le nomme avec le numéro de version. Ensuite, je peux appeler directement un certain Java comme donc:

@echo off
:: testjava.bat
set Java_HOME=C:\JDK1.x.xx
set PATH=%Java_HOME%\bin;%PATH%;.
Java -version
pause

Donc, ma recommandation est de définir votre variable système Java_HOME et votre variable PATH comme je le montre ci-dessus. Cela remplacerait tout sur votre système afin que votre JDK de votre choix soit la valeur par défaut par rapport au JRE.

2
djangofan

Ce AppData chemin dans votre commentaire n'est pas sur votre chemin (supposément, de toute façon), donc ce n'est probablement pas ce qu'il utilise. Malheureusement, il n'y a pas non plus de commande which sous Windows.

Si vous modifiez votre chemin et déplacez le C:\Program Files\Java\bin répertoire au tout début de la liste et il imprime toujours 1.7.0_09, alors vous avez en quelque sorte JDK7u9 dans votre dossier JDK7u7. Sinon, accédez à tous les autres répertoires de votre chemin d'accès et ouvrez-les 1 par 1 jusqu'à ce que vous trouviez le fichier Java approprié. Heureusement pour vous, votre chemin est beaucoup plus court que le mien.

Notez qu'en faisant:

> Java -version

Il peut également rechercher Java.bat et d'autres extensions non -exe, alors gardez un œil sur cela pendant que vous recherchez votre chemin. Essayez de courir:

> Java.exe -version

De cette façon, vous savez vous recherchez un fichier exe.

Une dernière chose que vous pouvez essayer:

> "C:\Program Files\Java\jdk1.7.0_07\bin\Java" -version

Si cela renvoie 1.7.0_09, puis quelque chose s'est produit qui a mis à jour votre JDK sur place, ce qui n'est pas censé se produire, AFAIK (mais je peux me tromper).

2
Brian