2009-08-27 13 views
15

Ho cercato su google la risposta, ma tutto ciò che ho trovato sono suggerimenti su come rilevare Java da un browser o il modo molto generico di avviare Java e vedere se viene eseguito, il che introduce un possibile ritardo nella mia applicazione. (~ Due secondi quando ha iniziato la prima volta sulla mia macchina)Come posso rilevare Sun/Oracle JRE installato su Windows?

spero che ci sia un modo più veloce, se si applicano le seguenti limitazioni:

  • Solo JRE di Sun/Oracle o JDK
  • Solo 1.6 e più alte piattaforme
  • solo Windows
  • Non da un browser, ma da un vecchio Win32 semplice eseguibile

Questo rilevamento non è pensato per un'applicazione pubblica, ma solo per uso interno su piattaforme Windows.

C'è un percorso di registro che posso leggere o un file di configurazione che posso analizzare?

+0

vedete un ritardo se la JRE * non * è installato ? E se è installato non hai intenzione di eseguire il programma e accettare il ritardo di avvio comunque? – finnw

+1

Non immediatamente. L'applicazione ha molte funzionalità e all'avvio vengono controllati tutti i prerequisiti. A volte l'utente non arriva nemmeno al percorso del codice che richiede Java, ma deve ancora subire il ritardo. Gli utenti hanno già disapprovato l'avvio lungo ... –

risposta

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

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

+0

@ParchedSquid, l'OP ha dichiarato" * da un semplice vecchio eseguibile Win32 * ", che non vedrà il' Wow6432Node'. – finnw

+1

Sul mio PC HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java Runtime Environment punta a un vecchio JRE disinstallato. L'unica registrazione corretta per me è in HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ JavaSoft \ Java Runtime Environment – jornhd

4

Il Registro di sistema è probabilmente il percorso più semplice, presupponendo che sia stato eseguito un programma di installazione. versioni installate possono essere trovati in varie sottochiavi sotto:

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

Se l'utente ha configurato manualmente il loro ambiente, si potrebbe verificare JAVA_HOME/a piedi la variabile PATH e verificare la versione del file. Demo di script WSH:

'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") 

Vedi GetFileVersionInfo e compagnia. I numeri di versione principali sembrano corrispondere alla versione di Java (5, 6). C'è una quantità finita che puoi fare senza invocare la JVM.

1

Invece è possibile provare a eseguire il comando "java -version" nel prompt dei comandi.

Questo potrebbe non funzionare correttamente se il JRE non è installato correttamente ma è stato copiato da un altro computer. Un'efficace soluzione è quella di passare alla directory di installazione JRE "C: \ Programmi \ Java \", passare alla cartella bin dal prompt dei comandi e quindi eseguire "java -version". L'output sarà una versione di installazione e tutte le informazioni rilevanti che stai cercando.

+0

Questo è quello che voglio evitare, vedere la mia domanda. –

1

Ci può essere un numero qualsiasi di JRE e JDK installati su una macchina Windows, ma solo uno avrà l'impostazione HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java Runtime Environment.

Si potrebbero anche considerare le variabili di ambiente "JAVA_HOME" e "Path", in quanto influenzeranno le chiamate di java da riga di comando.

5

Windows> Start> cmd>

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

Se si dispone di un JRE installato, viene visualizzato il percorso, ad esempio: C:\Windows\System32\java.exe

+0

Questa è certamente una soluzione ingenua. – Machinarius

Problemi correlati