2009-08-27 4 views
15

Ich habe versucht, die Antwort googeln, aber alles, was ich fand, war Tipps, wie Java von einem Browser oder die sehr generische Art und Weise nur Java zu starten und sehen, ob es läuft, was eine möglicherweise lange Verzögerung in meiner Anwendung vorstellt. (~ 2 Sekunden nach dem Start das erste Mal auf meinem Rechner)Wie kann ich die installierte Sun/Oracle JRE unter Windows erkennen?

Ich hoffe, es ist ein schneller Weg, wenn die folgenden Einschränkungen gelten:

  • Nur Sun/Oracle JREs oder JDKs
  • Nur 1.6 und höher
  • Nur Windows-Plattformen
  • Nicht von einem Browser aus, aber von einer einfachen alten Win32-Exe

Diese Erkennung ist nicht für eine öffentliche Anwendung gedacht, sondern nur für die interne Verwendung auf Windows-Plattformen.

Gibt es einen Registry-Pfad, den ich lesen kann oder eine Konfigurationsdatei, die ich parsen kann?

+0

Haben Sie eine Verzögerung sehen, ob das JRE * nicht ist installiert * ? Und wenn es installiert ist, werden Sie das Programm nicht ausführen und die Startverzögerung trotzdem akzeptieren? – finnw

+1

Nicht sofort. Die Anwendung hat viele Funktionen und beim Start werden alle Voraussetzungen überprüft. Manchmal kommt der Benutzer nicht einmal auf den Codepfad, der Java erfordert, sondern muss immer noch unter der Verzögerung leiden. Die Benutzer runzeln schon über den langen Start ... –

Antwort

19
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment 
+7

oder 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment' –

+0

@ParchedSquid, das OP angegeben" * aus einem einfachen alten Win32 ausführbare * ", die das' 'nicht sehen wird Wow6432Node'. – finnw

+1

Auf meinem PC zeigen HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java Runtime Environment auf eine alte, nicht installierte JRE. Die einzige korrekte Registrierung für mich ist unter HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment – jornhd

4

Die Registrierung wird wahrscheinlich der einfachste Weg sein - unter der Annahme, dass ein Installationsprogramm ausgeführt wurde. Installierte Versionen können in verschiedenen Unterschlüssel unter:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit 
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment 

Wenn der Benutzer seine Umgebung hat manuell konfiguriert, könnten Sie JAVA_HOME überprüfen/zu Fuß die PATH Variable und überprüfen Sie die Dateiversion. Demo WSH-Skript:

'file: whereJava.vbs 
'usage: cscript /Nologo whereJava.vbs 

'find Java 6 from registry 
Set objShell = CreateObject("WScript.Shell") 
Wscript.Echo objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\" &_ 
        "JavaSoft\Java Runtime Environment\1.6\JavaHome") 

'check file version of java.exe 
javaHome = objShell.Environment.item("JAVA_HOME") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Wscript.Echo objFSO.GetFileVersion(javaHome & "\bin\java.exe") 

Siehe GetFileVersionInfo und Unternehmen. Die wichtigsten Versionsnummern scheinen der Java-Version zu entsprechen (5, 6). Es gibt einen endlichen Betrag, den Sie ohne Aufruf der JVM ausführen können.

1

Stattdessen können Sie versuchen, den Befehl "java -version" in der Eingabeaufforderung auszuführen.

Dies funktioniert möglicherweise nicht gut, wenn die JRE nicht ordnungsgemäß installiert, aber von einem anderen Computer kopiert wurde. Ein Sure-Shot-Workaround besteht darin, zum JRE-Installationsverzeichnis "C: \ Programme \ Java \" zu navigieren, von der Eingabeaufforderung zum Ordner bin zu navigieren und dann "java -version" auszuführen. Ausgabe ist eine Installationsversion und alle relevanten Informationen, nach denen Sie suchen.

+0

Das möchte ich vermeiden, siehe meine Frage. –

1

Es kann eine beliebige Anzahl installierter JREs und JDKs auf einem Windows-Rechner geben, aber nur einer wird über die HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java-Laufzeitumgebung verfügen.

Sie könnten auch die Umgebungsvariablen "JAVA_HOME" und "Path" berücksichtigen, da sie Java-Aufrufe in der Befehlszeile beeinflussen.

5

Fenster> Startseite> cmd>

C:> for %i in (java.exe) do @echo. %~$PATH:i 

Wenn Sie eine JRE installiert ist, wird der Pfad angezeigt, zum Beispiel: C:\Windows\System32\java.exe

+0

Dies ist sicherlich eine naive Lösung. – Machinarius

Verwandte Themen