2012-06-16 15 views
30

Ho appena installato Java JDK 6u33 in Windows XP. Anche se non ho impostato la variabile di ambiente PATH, sono in grado di eseguire java -version nel prompt dei comandi.Qual è la differenza tra "system32 java.exe" e "Programmi Java jdk1.6.0_33 bin java.exe"?

Quando eseguo questo comando for %i in (java.exe) do @echo. %~$PATH:i, ottengo questo output: C:\WINDOWS\system32\java.exe

Quando controllo il mio PC, ho scoperto che ci sono 2 java.exe:
1. C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
2. C:\WINDOWS\system32\java.exe

Posso sapere qual è la differenza tra system32\java.exe e Program Files\Java\jdk1.6.0_33\bin\java.exe? Perché solo system32\java.exe viene visualizzato quando eseguo for %i in (java.exe) do @echo. %~$PATH:i?

Devo ancora aggiungere C:\Program Files\Java\jdk1.6.0_33\bin\ alla variabile di ambiente PATH?

risposta

26

L'impostazione della variabile PATH consente solo di accedere a javac e agli altri programmi e strumenti nella cartella bin jdk.

Il java.exe in \windows\system32\ è fornito in modo che non tutti hanno bisogno per impostare una variabile PATH solo per eseguire un programma Java (dalla riga di comando) e seleziona una versione (l'ultimo installato sembra) di Java installata macchine virtuali (JVM) se ne sono installate più di una (pubblicamente).

Vedere questo link per ulteriori informazioni:

http://mindprod.com/jgloss/javaexe.html#MULTIPLES

Citazione:

A complicare le cose ulteriormente la java.exe in system32 è solo un manichino. Cerca nel registro e decide quale reale java.exe usare. L'ultima JVM installata diventa quella utilizzata, anche se è più vecchia. Per passare a JVM, normalmente è necessario reinstallare quello che si desidera.

+11

Non è un dummy "java.exe" e non è necessario reinstallarlo, è sufficiente passare la versione richiesta con il parametro -version come 'java -version:" 1.6 "MyClass' per forzare 1.6 JRE su una workstation con installata la versione multipla (consultare http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html) – RealHowTo

+2

Vero che è possibile ignorare la necessità di una reinstallazione naturalmente * se * si passano i parametri della riga di comando, e si può anche specificare il percorso completo per il runtime java invece (java.exe, javaw.exe o javaws .exe). Però la maggior parte degli utenti non è molto "automatica". –

10

(Non una risposta, ma piuttosto un commento sulla risposta di Mattias) Non sono sicuro di questo business "fittizio". Java.exe in system32 è un file normale, nemmeno un collegamento simbolico o rigido. Mattias potrebbe riferirsi al problema che viene spiegato qui: http://msdn.microsoft.com/en-us/library/aa384187

In breve, se si dispone di un sistema a 64 bit e un'installazione Java, le applicazioni a 32 bit non vedranno java.exe (né javaw. exe, javaws.exe) installato in C: \ Windows \ System32 \ perché verrà presentato con C: \ Windows \ SysWoW64 \ masquerading come C: \ Windows \ System32. Il programma di installazione non riesce a inserire una copia di java.exe in SysWoW64, quindi un'applicazione a 32 bit che tenta di avviare Java non riuscirà a farlo. Ciò confonderà l'utente se guarda nella directory system32 usando explorer, poiché explorer è un'app 64-bit e vedrà quindi la directory system32 "reale".

+4

Su un sistema a 64 bit, in genere è necessario installare sia la versione a 64 bit sia quella a 32 bit di Java. –

+0

Ho una tale installazione, ma ad esempio 64bit Eclipse esegue Java a 32 bit, qualche idea del perché? Quando eseguo 'java -version' restituisce anche la versione a 32 bit. È possibile modificarlo per utilizzare principalmente 64 bit? – Betlista

+0

Betlista, hai entrambi i JDK installati? – Urhixidur

Problemi correlati