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
Author: Franz Noel, 2012-12-05

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"

Fonte: Selezionare un particolare JRE dalla riga di comando

 16
Author: RealHowTo, 2012-12-06 00:08:51

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.

 5
Author: Shashidhar, 2017-03-27 11:01:57

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).

 2
Author: Brian, 2012-12-05 23:43:09

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.

 2
Author: djangofan, 2012-12-05 23:55:27