2012-12-05 7 views
13

Ich habe vor kurzem auf meine Java-Version überprüft. Ich habe den Befehl java -version ausgeführt und ich habe herausgefunden, dass ich java version 1.7.0_09 verwendet habe. Aber als ich versuchte, auf C:\Program Files\Java\ Verzeichnis zu überprüfen, scheint ich nicht die gleiche Version zu finden. Ich sehe nur die folgenden:Verschiedene Java-Version zeigt auf der Kommandozeile

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

Und so weiter ...

Mein p rogramme laufen noch, aber ich versuche nur alles manuell zu kompilieren und zu verstehen, wie Java vom Betriebssystem behandelt wird.

Eine andere Sache, die seltsam ist, habe ich versucht, auf Umgebungsvariableneinstellungen zu überprüfen, und es sagt nichts über jdk1.7.0_09.

Pfad:

  • C: \ Programme \ Gemeinsame Dateien \ Microsoft Shared \ Windows Live;
  • % SystemRoot% \ system32;
  • % SystemRoot%;
  • % SystemRoot% \ System32 \ Wbem;
  • % SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \;
  • C: \ Programme \ TortoiseSVN \ bin;
  • C: \ Programme \ Windows Live \ Shared;
  • C: \ eclipse \ plugins \ com.google.appengine.eclipse.sdkbundle_1.6.5 \ appengine-java-sdk-1.6.5 \ bin;
  • C: \ Programme \ Java \ jdk1.7.0_07 \ bin; C: \ Programme \ QuickTime \ QTSystem \;
  • % ANT_HOME% \ ist

Ich will nur euch wissen lassen, dass es irgendwie wurde automatisch ein jre. Das komplette Verzeichnis ist C:\Users\User02\AppData\LocalLow\Sun\Java\jre1.7.0_09 und es hat nur die Datei lzma.dll.

Aber ich habe ein anderes Verzeichnis, das C:\Users\User02\AppData\LocalLow\Sun\Java\jdk1.7.0_07 sagt. Die Dateien darin sind:

  • jdk1.7.0_07.msi
  • sj170070.cab
  • ss170070.cab
  • st170070.cab
  • und sz170070.cab
+0

ist es nur mir, oder gibt es zwei Verzeichnisse mit dem gleichen Namen in dieser Liste? – stevevls

+1

Sie erhalten, was auch immer Ihr Pfad ist, wenn Sie ihn nicht explizit angeben, genau wie jedes andere Programm auf Ihrem Computer. ** Bearbeiten: ** Siehe: http://www.computerhope.com/issues/ch000549.htm –

+1

Verwenden Sie die Suche in Windows und finden Sie alle Instanzen von 'Java'. Ihr Pfad ist auf einen dieser Orte gerichtet, und das ist der, den Sie bekommen, wenn Sie nur 'java' eingeben. –

Antwort

14

Es ist möglich, viele JRE nebeneinander auf einem Computer zu haben.

Wenn die JRE ordnungsgemäß unter Windows installiert ist, werden Informationen zu jeder Version in der Registrierung gespeichert. Der Installationsprozess installiert eine spezielle java.exe im System PATH (% SYSTEMROOT% \ System32). Sie müssen also PATH nicht ändern, da diese spezielle java.exe die aktuelle JRE findet. Geben Sie in einer Befehlszeile java -version ein, um die aktuelle installierte jre-Version anzuzeigen.

Mit Release 1.6 ist es jetzt möglich, eine andere JRE-Installation als die letzte ohne eine Änderung der Registrierung auszuwählen.

Die JRE-Installation werden in der Registry im Schlüssel

HKEY_LOCAL_MACHINE \ SOFTWARE \ Javasoft \ Java Runtime Environment

diese einfachen Test Klasse

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

Auf einem Nehmen aufgelistet System, mit 1.6 und 1.5 installiert. Wenn Sie

eingeben
> java ShowVersion 

Es ist wahrscheinlich die 1.6 JRE, die verwendet wird, da es das letzte installierte ist.

Um stattdessen die 1,5 JRE zu erzwingen, verwenden Sie diese Befehlszeile.

Wenn der Bytecode mit der angegebenen JRE nicht kompatibel ist, dann wird es natürlich nicht funktionieren.

ref: technote java 6

Sie können jederzeit den vollständigen Pfad geben eine spezifische Installation zu verwenden. Das Starten der JVM auf diese Weise verwendet die Registrierungseinstellung überhaupt nicht.

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

Quelle: Select a particular JRE from the command line

+0

Diese Funktion wird entfernt von [JDK9] (https://bugs.java.com/view_bug.do?bug_id=JDK-8050071), traurige Sache. – RealHowTo

2

In Antwort auf die "tatsächliche" Frage:

andere Sache, die seltsam ist, habe ich versucht, auf die Umwelt variable Einstellungen zu überprüfen, und es funktioniert nicht Sag etwas über jdk1.7.0_09.

Was hier passiert ist, dass Sie jdk1.7.0_07 installiert und dann automatisch aktualisiert haben. Wenn dies geschieht, verwendet es immer noch den alten Ordnernamen, den Sie ursprünglich installiert haben.

Nachdem ich Java installiert habe, mache ich normalerweise eine Kopie des JDK-Verzeichnisses und benenne es mit der Versionsnummer. Dann kann ich direkt eine bestimmte Java nennen wie so:

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

Also, meine Empfehlung ist JAVA_HOME Systemvariable und PATH-Variable zu setzen, wie ich oben zeigen. Dies würde alles auf Ihrem System überschreiben, so dass Ihr JDK Ihrer Wahl der Standard über die JRE ist.

+0

Sind Sie sicher, dass die automatische Aktualisierung für das JDK verfügbar ist? ([Relevante Frage.] (Http://stackoverflow.com/questions/1829986/is-there-a-way-to-update-the-jdk-without-manually-downloading-the-new-version)) Ich dachte, Nur die JRE hatte eine automatische Aktualisierung. – Brian

+0

Das ist wahr. In diesem Fall erklärt das, warum Java JRE in einem Verzeichnis, das nach der Hauptversion von Java benannt ist, in Programmdateien installiert wurde und die Nebenversionen oder die Buildnummer nicht enthält. Das wäre, weil es automatisch aktualisiert.In diesem Fall zeigt sein System auf das aktualisierte JRE7 als Standardjava und die Version dieses Java hat automatisch auf die Nebenversion 09 aktualisiert. – djangofan

2

Die AppData Pfad in Ihrem Kommentar ist nicht auf dem Weg (angeblich sowieso), so das ist wahrscheinlich nicht das, was es verwendet wird. Leider gibt es unter Windows auch keinen which Befehl.

Wenn Sie Ihren Weg bearbeiten und das C:\Program Files\Java\bin Verzeichnis an den Anfang der Liste verschieben und druckt es noch 1.7.0_09, dann irgendwie haben Sie JDK7u9 in Ihrem JDK7u7 Ordner. Wenn nicht, navigieren Sie zu allen anderen Verzeichnissen auf Ihrem Pfad und öffnen Sie sie 1-mal-1, bis Sie die entsprechende Datei java finden. Zum Glück für Sie ist Ihr Weg viel kürzer als meins.

Beachten Sie, dass, wenn dabei:

> java -version 

Es kann auch für java.bat und andere schauen nicht exe Erweiterungen, so dass für diesen im Auge behalten, während Sie Ihren Weg sind. Versuchen Sie laufen:

> java.exe -version 

diese Weise wissen Sie Sie suchen eine exe Datei.

Eine letzte Sache, die Sie ausprobieren können:

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

Wenn diese 1.7.0_09 zurückkehrt, dann geschah etwas, das JDK an Ort und Stelle aktualisiert, die angeblich nicht geschehen, AFAIK (aber ich könnte falsch sein) .

2

die folgende Hinzufügen wird Ihr Problem lösen:

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

Zusätzlich, wenn es nicht das bedeutet, funktioniert Sie die PATH für mehrere Java-Versionen festgelegt haben, sind nur die neueste ein und entfernen Sie alle von PATH Variablen.

Verwandte Themen