Versione Java diversa che mostra sulla riga di comando
Ho recentemente controllato la mia versione Java. Ho eseguito il comando java -version
e ho scoperto che stavo usando java version 1.7.0_09
. Ma quando ho provato a controllare la directory C:\Program Files\Java\
, non mi sembra di trovare la stessa versione. Vedo solo quanto segue:
- j2re1.4
- jdk1.6. 0_32
- jdk1.7. 0_06
- jdk1.7. 0_07
- jre6
- jre7
E così via...
I miei programmi sono ancora in esecuzione, ma sto solo cercando di compilare tutto manualmente, e capire come Java viene trattato dal sistema operativo.
Un'altra cosa strana è che ho provato a controllare le impostazioni delle variabili d'ambiente e non dice nulla su jdk1.7.0_09
.
Percorso:
- C:\Program File \ File comuni \ Microsoft Shared \ Windows Live;
- % SystemRoot% \ system32;
- % SystemRoot%;
- % SystemRoot% \ System32 \ Wbem;
- % SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1. 0\;
- C:\Program File \ TortoiseSVN \ bin;
- C:\Program File \ Windows Live \ Shared;
- C:\eclipse\plugins\com.Google.appengine.Eclipse.1.6.5 \ appengine-java-sdk-1.6.5 \ bin;
- C:\Program File \ Java \ jdk1. 7. 0_07\bin;C:\Program File \ QuickTime \ QTSystem\;
- % ANT_HOME% \ bin
Voglio solo farvi sapere che in qualche modo è diventato automaticamente un jre.
La directory completa è C:\Users\User02\AppData\LocalLow\Sun\Java\jre1.7.0_09
e ha appena ottenuto il file denominato lzma.dll
.
Ma, ho un'altra directory che dice C:\Users\User02\AppData\LocalLow\Sun\Java\jdk1.7.0_07
. I file al suo interno sono:
- jdk1.7.0_07.msi
- sj170070.cab
- ss170070.cab
- st170070.cab
- e sz170070.cab
4 answers
È possibile avere molti JRE affiancati su un computer.
Se il JRE è installato correttamente su Windows, le informazioni relative a ciascuna versione vengono memorizzate nel registro di sistema. Il processo di installazione installa un java speciale .exe nel PERCORSO di sistema (%SYSTEMROOT%\System32). Quindi non è necessario modificare il percorso perché questo java speciale.exe troverà il JRE corrente. Da una riga di comando, digitare java-version per visualizzare la versione corrente di jre installata.
Con release 1.6, è ora possibile selezionare un'installazione JRE diversa da quella precedente senza alcuna modifica del registro.
Le installazioni JRE sono elencate nel registro di sistema nella chiave
HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java Runtime Environment
Prendi questa semplice classe di test
public class ShowVersion {
public static void main(String args[]) {
System.out.println(System.getProperty("java.version"));
}
}
Su un sistema, con 1.6 e 1.5 installati. Se si digita
> java ShowVersion
Probabilmente è il 1.6 JRE che verrà utilizzato poiché è l'ultimo installare.
Per forzare il 1.5 JRE invece, utilizzare questa riga di comando.
> java -version:"1.5" ShowVersion
Se il bytecode è incompatibile con il JRE dato allora .. non funzionerà, ovviamente.
Rif: nota tecnica java 6
È sempre possibile fornire il percorso completo per utilizzare un'installazione specifica. L'avvio della JVM in questo modo non utilizza affatto l'impostazione del registro.
>"C:\Program Files\Java\j2re1.4.1_02\bin\java" -version
java version "1.4.1_02"
L'aggiunta di quanto segue risolverà il problema:
set JAVA_HOME="your jdk path"
set PATH=%JAVA_HOME%\bin;%PATH%.
Inoltre, se non funziona, significa che hai impostato PATH
per più versioni java, includi solo l'ultima e rimuovi tutte le variabili PATH
.
Quel percorso AppData
nel tuo commento non è sul tuo percorso (presumibilmente, comunque), quindi probabilmente non è quello che sta usando. Sfortunatamente, non esiste un comando which
su Windows.
Se si modifica il percorso e si sposta la directory C:\Program Files\Java\bin
all'inizio dell'elenco e si stampa ancora 1.7.0_09
, in qualche modo si ha JDK7u9 nella cartella JDK7u7. In caso contrario, passare a tutte le altre directory sul percorso e aprirle 1 per 1 fino a trovare il file java
appropriato. Fortunatamente per tu, il tuo percorso è molto più breve del mio.
Si noti che quando si esegue:
> java -version
Potrebbe anche cercare java.bat
e altre estensioni non exe
, quindi tieni d'occhio questo mentre stai cercando il tuo percorso. Prova a correre:
> java.exe -version
In questo modo sai stai cercando un file exe
.
Un'ultima cosa che puoi provare:
> "C:\Program Files\Java\jdk1.7.0_07\bin\java" -version
Se questo restituisce 1.7.0_09
, è successo qualcosa che ha aggiornato il tuo JDK sul posto, cosa che non dovrebbe accadere, AFAIK (ma potrei sbagliarmi).
In risposta alla domanda" attuale":
Un'altra cosa che è strana è che ho provato a controllare l'ambiente impostazioni variabili, e non dice nulla su jdk1.7. 0_09.
Quello che è successo qui è che hai installato jdk1.7.0_07 e poi l'hai aggiornato automaticamente. Quando ciò accade, utilizza ancora il vecchio nome della cartella in cui è stato originariamente installato.
Dopo aver installato Java , di solito faccio una copia della directory JDK e la nomino con il numero di versione. Quindi, posso chiamare direttamente un certo java in questo modo:
@echo off
:: testjava.bat
set JAVA_HOME=C:\JDK1.x.xx
set PATH=%JAVA_HOME%\bin;%PATH%;.
java -version
pause
Quindi, la mia raccomandazione è di impostare la variabile di sistema JAVA_HOME e la variabile PATH come mostro sopra. Ciò sovrascriverebbe tutto sul tuo sistema in modo che il tuo JDK di tua scelta sia l'impostazione predefinita rispetto al JRE.