2009-09-07 18 views
13

Uso Eclipse con gli script delle formiche ed Eclipse funziona bene con l'installazione JRE predefinita su Windows XP.Come faccio a rendere JDK il JRE predefinito?

Il fastidio arriva quando voglio eseguire script di formiche compilando con il tag javac, dove fallisce perché non ci sono tools.jar nel classpath.

Mi è venuta l'idea che se avessi potuto fare in modo che il JDK diventasse il Java predefinito su Windows, allora avrei avuto quello che ho oggi, oltre a lavorare con il form.

Questo può essere fatto? Cosa mi è mancato nel processo di installazione?


Edit: so di JAVA_HOME, ma che è noioso e soggetto a errori (aggiornare manualmente le variabili di ambiente quando un JDK più fresco è disponibile non è sempre qualcosa che ricordo).


Edit: ho finito per capire come rendere il compito javac utilizzare il compilatore Eclipse (ecj.jar), che funziona molto bene.


Edit: Maven supporta anche usando il compilatore Eclipse, ma questo sembra essere usato molto raramente e con una vecchia versione di ecj.jar. Intendo approfondire questo aspetto in un secondo momento.


Edit: Utilizzo Corte di giustizia europea con Maven-compiler-plugin 3.0 funziona molto bene, e permette la costruzione di un JRE.


Modifica: ho riscontrato problemi con lo strumento javadoc in arresto anomalo durante l'analisi del bytecode generato da ecj.

+1

Quando si esegue formica si esegue un file batch, in modo diverso da variabili dichiarate nel file batch sei unica altra opzione è l'ambiente Vars. La versione corrente di Java è disponibile dal registro su Windows (HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java Runtime Environment), che credo venga aggiornata quando si installa Java e quindi è possibile effettuare una ricerca, ma se me lo chiedi JAVA_HOME è l'opzione più facile. –

risposta

14

La risposta è "no", non è possibile ottenere il JDK come JVM predefinito al momento dell'installazione.

Come indicato dalle altre risposte, è possibile regolare il percorso e la propria JAVA_HOME in modo che punti al JDK o a un'altra JVM interamente. Questo è in effetti ciò che l'installazione Java fa in primo luogo.

Tuttavia, il problema è che si desidera trovare tools.jar. Per fare ciò è possibile copiarlo nella directory ext sotto la JVM predefinita. Controllare la struttura del file JDK here. Questo probabilmente funzionerà.

D'altra parte, se la modifica delle variabili JAVA_HOME e PATH per Java sembra fastidioso, ricordare che è solo uno di una serie di cose che facciamo per tenerci taglienti just kidding, sucks that we still have to do this in 2009 http://www.smiley-faces.org/smiley-faces/smiley-face-smile.gif

+1

funziona! .. grazie mille @Yar – learner

+3

"ricorda che è solo una di una serie di cose che facciamo per tenerci forte"? Pieni voti per l'entusiasmo, ma visto che mi sono imbattuto in questo, preferirei personalmente un sistema che non richieda così tanta mano. – Basic

+0

@Basic è tutto relativo, penso. Sono stato con Objective-C (e Xcode) per due anni e questa roba sembra ridicolmente facile. JDK e classpath sono fondamentalmente gli unici due problemi che hai in Java. –

2

Provare a modificare la variabile di ambiente JAVA_HOME in modo che punti al JDK anziché a JRE.

In alternativa o eventualmente in aggiunta, aggiungere una voce PATH alla directory bin JDK prima di una qualsiasi delle directory di sistema di Windows.

Ho il sospetto JAVA_HOME è sufficiente per ottenere Funzionamento della formica, ma a volte è bello avere la versione JDK di Java, ecc sul percorso anche, in modo che quando basta eseguire java dalla riga di comando, si otterrà esattamente la stessa versione di quando esegui javac.

+1

Grazie per la soluzione, che io conosco. Sono solo molto stanco di mantenere questi suggerimenti se un semplice tweak di installazione potrebbe fare il trucco. –

0

Questa operazione viene normalmente eseguita impostando la variabile di ambiente JAVA_HOME nella directory radice JDK che si desidera utilizzare.

Per esempio da una riga di comando o un file batch semplicemente fare qualcosa di simile:

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_14 

Tuttavia per impostare JAVA_HOME in modo permanente aggiungerlo alle variabili d'ambiente nella scheda Avanzate nella finestra delle proprietà per My Computer.

1

Probabilmente si potrebbe scrivere uno script WSH per riconfigura il tuo percorso automaticamente.

di script JScript Questo stampa solo alcune informazioni:

//file: jdk.js    usage: cscript /Nologo jdk.js 
var objShell = WScript.CreateObject("WScript.Shell"); 
function setJdk(version) { 
    try { 
    var jdk = objShell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\" + 
     "JavaSoft\\Java Development Kit\\" + version + "\\JavaHome"); 
    if(jdk != null && jdk != "") { 
     jdk += "\\bin"; 
     var path = objShell.RegRead("HKEY_CURRENT_USER\\Environment\\Path"); 
     path = jdk + ";" + path; 
     WScript.Echo("Could set PATH to " + path + "\n"); 
    } 
    } catch(err) { /*probably key does not exist*/ } 
} 
setJdk("1.7"); 
setJdk("1.6"); 
setJdk("1.5"); 

c'è un metodo RegWrite che può essere usato per scrivere nel Registro di sistema. C'è un po 'di lavoro nel determinare la versione più recente e nel rejigging del percorso, nella rimozione delle voci obsolete e nell'ordinamento del sistema rispetto ai percorsi degli utenti. Senza dubbio potrebbe essere utilizzato anche per impostare JAVA_HOME. La voce JDK dovrebbe apparire prima della directory system32, poiché l'installer JRE mette uno java.exe lì.

(io non sono sicuro al 100% se il guscio sarebbe pick up su tali cambiamenti o se un riavvio/ENV ricarica variabile di qualche tipo sarebbe necessario.)

0

Apparentemente Eclipse può compilare senza la tools.jar . Suppongo che abbiano un comando specifico javac che possa funzionare con un JRE (e non con un JDK); questo potrebbe essere il motivo per cui possono elencare i loro avvertimenti.

In ogni caso, vorrei andare nel modo standard (come suggerito sopra) e installare un JDK sul sistema. È anche possibile avviare Eclipse con quel JDK specifico (senza alcuna modifica JAVA_HOME) modificando il file eclipse.ini (vedere questi instructions).

+0

Sì, Eclipse ha il proprio compilatore incrementale. O è Jikes o è basato su di esso (da quello che ricordo). – cjstehno

+0

jikes è stato scritto in C++ ma ecj dovrebbe basarsi su di esso. –

4

Copia il file tools.jar in una posizione in cui Eclipse lo cerca potrebbe funzionare, ma è disordinato e fragile poiché è un passaggio che potresti non ricordare la prossima volta che aggiorni il tuo JDK. Meglio è convincere Eclipse a cercarlo nella giusta posizione.

L'impostazione di JAVA_HOME nella posizione corretta funziona per alcuni strumenti, ma Eclipse does not honor it.

Un paio di cose da provare:

  • Assicurarsi che il JDK è identificato e selezionato sotto Preferenze-> Java-> JRE installati.

  • Assicurarsi che Ant venga richiamato dal JDK . Un indizio è che nella parte superiore di l'output della console si dovrebbe vedere il percorso di javaw.exe che è utilizzato da . Se il percorso è nel JRE, è necessario disporre di più convincente.Controlla Esegui-> Strumenti esterni-> Strumenti esterni Configurazioni -> [la tua build Ant] -> JRE e assicurati che le impostazioni lì puntino al JDK.

+0

hai salvato la mia giornata con l'informazione che eclissi lo sostituisce per ant, anche se il jdk predefinito è impostato correttamente ;- –

9
  1. Scarica JDK dal sito
  2. Una volta che tutto è finito, andare al Pannello di controllo
  3. Aprire JAVA
  4. Fare clic sulla scheda Java e selezionare Visualizza
  5. Ci sarà una voce presente nella lista. Cambia il percorso Java da JRE al JDK che hai scaricato, ad esempio: C:\Program Files\Java\<your_jdk_version>\bin\java.exe.
    Per esempio, il mio aspetto: C:\Program Files\Java\jdk1.7.0_07\bin\java.exe
Problemi correlati