2009-02-21 5 views
27

Sto facendo lavoro java su un class server in cui non ho root. Ogni volta che provo a compilare usando form, punta alla directory sbagliata (/usr/tomcat invece di /usr/tomcat/jre).Come cambio JAVA_HOME per ant?

Una delle cose che ci è stato detto di fare durante la configurazione dei nostri account utente era aggiungere export JAVA_HOME=/usr/tomcat/jre al file .bashrc. Non so se questo avrebbe dovuto occuparsi del problema ma non sembra.

Quindi, come posso modificare la proprietà JAVA_HOME per ant, ma solo per quando eseguo formica?

EDIT: echo $JAVA_HOME punti per /usr/tomcat/jre echo $JAVA_HOME\bin punti per /usr/tomcat/jrebin

Il problema è quando Normalmente io eseguo ant ottengo questo errore:

Unable to locate tools.jar. Expected to find it in /usr/tomcat/lib/tools.jar 
Buildfile: build.xml 

compile: 
    [javac] Compiling 1 source file to /home/ejm244/build/classes 

BUILD FAILED 
/home/ejm244/build.xml:9: Unable to find a javac compiler; 
com.sun.tools.javac.Main is not on the classpath. 

Perhaps JAVA_HOME does not point to the JDK 

Total time: 0 seconds 
+0

Hai impostato ANT_HOME? – laz

+0

echo $ ANT_HOME restituisce nulla, quindi probabilmente no. Lo esaminerò ma qualsiasi informazione sarebbe utile. –

risposta

6

JAVA_HOME deve puntare dove il JDK non è installato non un JRE.

Quindi, se si digita ls $ JAVA_HOME cosa vedi? se fai ls $ JAVA_HOME/bin/vedi javac?

Se il primo non funziona, non è necessario che JAVA_HOME indichi la directory corretta. Se il secondo non funziona, è necessario puntare JAVA_HOME su un JDK anziché su un JRE.

+0

Penso che tu intenda $ JAVA_HOME/bin/(barre in avanti) – wds

+0

ack - i miei studenti usano troppo Windows :-) Grazie! – TofuBeer

+1

Sei corretto; tuttavia, "ant.java.la proprietà "home" * * punta sempre a un jre perché riempie quella proprietà da java.lang.System (che per definizione è JRE sotto JDK). Per impostare definitivamente l'ambiente Java nella form, specificare le posizioni java usando $ { env.JAVA_HOME} con percorsi esatti. – ingyhere

9

È possibile creare il proprio script per l'esecuzione di formica, ad es. chiamato ant.sh come:

#!/bin/sh 
JAVA_HOME=</path/to/jdk>; export JAVA_HOME 
ant [email protected] 

e quindi eseguire la sceneggiatura.

$ chmod 755 ant.sh 
$./ant.sh clean compile 

o quello di destinazione formica che si desidera eseguire

+1

utilizzando 'jre' non funziona, non contiene gli strumenti che la formica sta chiedendo per –

+0

@Carlos Heuberger: giustamente, ho corretto che –

+2

Provato questo, non ha effetto JAVA_HOME –

5

Guardando lo script di shell per invocare formica, è possibile che il valore per $ JAVA_HOME set per la shell in .bashrc può essere ignorata nei file /etc/ant.conf, $ HOME/.ant/ant.conf e $ HOME/.antrc. Se si esegue il percorso di bash -x < allo script ant >, verranno emesse informazioni di debug che dovrebbero aiutare a rintracciare dove $ JAVA_HOME viene sovrascritto.

1

JAVA_HOME deve puntare a una casa JDK se si sta tentando di compilare il codice. Verificare se esiste/usr/tomcat/jre/bin/javac '. Ne dubito.

Se non si dispone di un JDK, è possibile aggirare il problema ottenendo la libreria ECJ (eclipse compiler), rilasciandola in "~/.ant/lib" e aggiungendo una proprietà di sistema alla riga di comando per usare quel compilatore - controlla il manuale di Ant per i dettagli.

http://ant.apache.org/

+0

di ant Leggere il messaggio di errore con maggiore attenzione: Impossibile trovare tools.jar. Si aspettava di trovarlo in /usr/tomcat/lib/tools.jar Ciò indica che JAVA_HOME è in realtà/usr/tomcat invece di/usr/tomcat/jre. Per qualche motivo, un valore errato per JAVA_HOME sta sovrascrivendo il valore della shell. – laz

+0

@laz non ha molta importanza - la causa principale è che O P sta cercando di usare JRE per eseguire Ant, mentre dovrebbe usare un JDK, come sottolineato da nbeyer – eis

1

Quando si utilizza Bash solo provare questo:

$ export JAVA_HOME=/usr/tomcat/jre 
0

Sarà necessario modificare il percorso JAVA_HOME alla directory Java SDK al posto della directory Java RE. In Windows è possibile farlo utilizzando il comando set in un prompt dei comandi.

ad es.

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

4

Sulla mia impostazione macchina Windows 7:

 
JAVA_HOME="C:\Program Files\Java\jdk1.6.0_18" 

non ha funzionato. Ma impostazione:

 
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18 

lavorato.

+0

Ha funzionato anche per me. Grazie! – Alexis

1

Impostare il JRE nel progetto (proprietà del progetto -> Percorso build Java-> Librerie, in genere ultima voce) o impostazioni globali predefinite nelle preferenze (Java-> JRE installati) su un JDK, non su un JRE.

-1

java_home fa sempre riferimento a jdk, il compilatore che ti ha dato le classi, e il jre è il modo in cui il tuo browser o qualsiasi altra cosa le classi compilate devono avere corrispondenza tra jdk e jre nella versione.

+1

Ho modificato la tua email per questa domanda su meta: http://meta.stackexchange.com/questions/89965/what-to-do-when-questioner-posts-email-ad-ress-for-responses In generale questo va anche per risposte. – gary

3

Anche se la variabile d'ambiente JAVA_HOME impostata correttamente, il ant possono utilizzare il JRE configurato all'interno di ogni build.xml o qualsiasi file di generazione.

Per verificare quale versione di JRE sta usando la formica, fare clic con il tasto destro sul file di build -> selezionare il form di build che visualizza i dettagli sulle attività da selezionare ecc., Selezionare il JRE che si desidera utilizzare.

È consigliabile utilizzare le impostazioni del livello di progetto o solo al livello dell'area di lavoro.

0

prova con questo:

/usr/sbin/update-alternatives --config java 
0

Quando si esegue formica dal guscio, non c'è bisogno di export JAVA_HOME prima, che avrebbe stabilito che la variabile per la shell corrente e tutti i comandi futuri, anziché utilizzare

[email protected]:~# JAVA_HOME=/path/to/jdk ant targets 
2

ci sono 2 modi di cambiare il compilatore:

  • export JAVA_HOME=/path/to/jdk prima inizia Ant.
  • Set <javac exectuable="/path/to/javac">

Un'altra opzione sarebbe quella di aggiungere un rispettivo tools.jar al classpath, ma questa strada è di solito presa se formica viene avviato da un altro strumenti come Maven.

Per maggiori dettagli su queste (o altre) opzioni di modifica del compilatore Java in Ant, vedere this article ad esempio.