2009-07-27 1 views
10

Esiste un modo standard per farlo? Mi rendo conto che questo può essere in qualche modo dipendente dalla piattaforma. Il nostro prodotto in questo momento è supportato solo su Windows, quindi suppongo sia quello a cui sono interessato in questo momento. Le uniche cose che posso pensare sono di eseguire la scansione del registro o eseguire la scansione del file system. La scansione del file system sembra richiedere molto tempo e il registro può non essere affidabile. Dovrei fare entrambe le cose? Qualche altro suggerimento? Ho provato a cercare un'API per farlo senza fortuna.Determina a livello di programmazione quali JDK/JRE sono installati sulla mia scatola

risposta

3

Innanzitutto vorrei iniziare a cercare la variabile di ambiente JAVA_HOME (e possibilmente JDK_HOME anche se questo è molto meno comune) e quindi determinare quale versione è e se si tratta di un JDK o JRE.

Dopo questo controllo per le posizioni comuni invece. Trova la directory dei file di programma del sistema (non supponendo che sia C: \ Program Files anche se è il 99,5% delle volte) e cerca i percorsi di installazione più comuni (es. Java).

Non farei una ricerca esauriente.

Vale la pena chiedere: hai davvero bisogno di trovare JDK in questo modo? Non puoi semplicemente chiedere all'utente quale JDK desidera utilizzare, suggerendo forse quelli facili che hai già trovato?

+0

Cletus si può difendere perché non farebbe una ricerca esaustiva? Intuitivamente sono d'accordo ma sto cercando motivi validi. –

+0

Una ricerca esauriente richiederebbe la ricerca di tutti i dischi rigidi per i file java.exe o javac.exe (presupponendo windows) che potrebbe richiedere molto tempo. –

+0

Suggerisci di limitare la ricerca a C: \ Programmi \ e la variabile di ambiente% PATH% oltre alle due variabili elencate sopra. –

1

Probabilmente mi piacerebbe una combinazione di ricerca delle chiavi del registro di Java installate e scansione delle posizioni di default per l'installazione (che non dovrebbe richiedere troppo tempo).

Un approccio alternativo sarebbe quello di raggruppare una piccola applicazione Java che stampa vari dettagli come la JVM in esecuzione.

34
System.out.println(System.getProperty("java.version")); 

Altre proprietà here

+0

Questo indica solo la versione di JRE che esegue il codice, non quello che è installato JDK/JRE – Jonik

+0

Spiacente, ho frainteso la domanda. È possibile utilizzare il registro e se non è stato trovato nulla, chiedere all'utente. La chiave è HKEY_LOCAL_MASHINE/SOFTWARE/JavaSoft/Java Development Kit –