2009-06-04 11 views
63

Sto usando Ant 1.7.0 e installato java 1.6, che si trova in JAVA_HOME.Ant utilizza la versione java errata

Voglio costruire un progetto utilizzando java 1.5, quindi ho esportato JAVA_HOME per essere la mia directory java 1.5.

java -version 

dice "1,5". Quando eseguo Ant utilizza java 1.6.

+2

Quale sistema operativo utilizzate? –

+1

È possibile scrivere uno script batch per specificare esattamente come eseguirlo. Se è appena in fase di compilazione, è possibile specificare la versione nel comando, come ad esempio:

risposta

17

Secondo lo ant manual, l'impostazione di JAVA_HOME dovrebbe funzionare - sei sicuro che l'impostazione modificata è visibile alla formica?

In alternativa, è possibile utilizzare la variabile JAVACMD.

+1

Ho il problema me stesso atm e JAVA_HOME punta al JDK corretto, tuttavia la formica è ancora riportando la versione java sbagliata. –

12

Eseguire la formica in modalità dettagliata: ant -v e cerca gli indizi.

+1

Questo mi ha aiutato molto. Per prima cosa ho provato a costruire un progetto in una libreria con jdk 1.8. In seguito ho scoperto che avevo bisogno di costruirlo su 1.7, quindi ho installato jdk 1.7, ho cambiato JAVA_HOME ma continuava a formarlo con 1,8. Usando 'ant -v' ho scoperto che formicava correttamente jdk1.7, ma la build stava omettendo tutte le classi nella cartella temporanea perché erano già lì a causa del mio precedente tentativo. Quindi tutto quello che ho fatto è stato eliminare la cartella temporanea, e li ha ricreati, questa volta con jdk 1.7 come volevo. Potrebbe aiutare qualcuno –

5

È anche possibile specificare in un compito javac quale livello di compatibilità (1.4, 1.5, 1.6) che si desidera utilizzare, è possibile impostare la "fonte" e valori di livello "target", controllare la documentazione qui: Javac task documentation

+1

Per garantire la compatibilità, aggiungere anche l'opzione '-bootclasspath' durante la compilazione. –

14

È possibile utilizzare le proprietà di destinazione e di origine sul tag javac per impostare un runtime di destinazione. L'esempio seguente compilerà qualsiasi codice sorgente per la versione 1.4 di destinazione su qualsiasi compilatore che supporti la versione 1.4 o successiva.

<javac compiler="classic" taskname="javac" includeAntRuntime="no" fork=" deprecation="true" target="1.4" source="1.4" srcdir="${src}" destdir="${classes}"> 

Nota: La 'srcdir' e 'destdir' sono i valori delle proprietà impostata altrove nello script di build, ad esempio <property name="classes" value="c:/classes" />

10

si potrebbe ottenere che con i seguenti passi, se si utilizza IDE Eclipse:

  1. Fare clic destro sul compito nel file Ant (build.xml).

  2. Mouse su "Esegui come", fare clic su "Configurazioni strumento esterno ...".

  3. Aggiungere chi segue a "Argomenti":

    -Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5 
    
67

Proprio avuto questo problema, è successo perché avevo prima aggiunto il file di generazione alla formica-vista quando il default JRE era 1.6.

Non c'era JRE specifico del progetto e ho cambiato il valore predefinito in 1.5, anche eclissi era in esecuzione in 1.5 e JAVA_HOME era 1.5. L'esecuzione del target della form dalla riga di comando ha utilizzato JRE 1.5, ma all'interno di Eclipse è ancora utilizzata 1.6.

Ho dovuto fare clic con il tasto destro del mouse sulla destinazione della formica, selezionare Esegui come ... e modificare il JRE nella scheda JRE. Questa impostazione è ricordata per le esecuzioni successive.

+5

Mi sono appena reso conto che la domanda non ha menzionato affatto Eclipse. La mia risposta è per il problema descritto quando si utilizza Eclipse. –

+1

Grazie per aver concluso alcune ore di frustrazione. –

+0

se non stai usando eclipse, dai un'occhiata alla mia risposta in fondo. –

1

Se si esegue Ant da eclipse, l'eclissi utilizzerà jdk o jre che è configurato nel percorso di classe (percorso di generazione).

+0

Sì per impostazione predefinita, ma può essere configurato in modo diverso per ogni file di formica, quindi per controllarne uno può essere fondamentale ... –

+6

Per sapere con certezza quale versione di java sta usando: '' – dmolony

+0

Imparare circa $ {ant.java.version} è stata una grande cosa per me, grazie! – javydreamercsw

5

Questa è piuttosto una vecchia domanda, ma aggiungerò i miei appunti per riferimenti futuri.

Avevo un problema simile e l'ho risolto modificando l'ordine delle esportazioni nella variabile PATH.

Per esempio stavo usando un metodo di concatenazione di stringhe sul mio cammino da fare (questo è solo un esempio):

$> export PATH='$PATH:'$JAVA_HOME 

Se la mia variabile PATH già avuto un java in essa, l'ultimo valore sarebbe senza significato, quindi l'ordine avrebbe importanza. Per risolvere questo ho iniziato a invertirlo aggiungendo prima la mia variabile, quindi aggiungendo il PERCORSO.

Seguendo questa idea ho invertito l'ordine che ANT_HOME veniva esportato. Aggiunta di JAVA_HOME prima di ANT_HOME.

Questa potrebbe essere solo una coincidenza, ma ha funzionato per me.

+0

Questo è successo anche a me. Non ero sicuro di quale voce fosse in conflitto con JAVA_HOME ma quando l'ho inserita all'inizio del PATH, ha funzionato. – Inversus

26

Facile!

In Eclipse:

  • Fare clic destro sul vostro build.xml

  • click "Esegui come", cliccare su "Strumento Configurazioni esterne ..."

  • Select scheda JRE. Seleziona il JRE che stai utilizzando.

Rieseguire l'attività, ora dovrebbe andare bene.

+0

Grazie, questo è esattamente quello che dovevo fare. –

1

Utilizzare i seguenti 2 proprietà per javac tag:

fork="yes" 
executable="full-path-to-the-javac-you-want-to-use". 

Spiegazione delle proprietà può essere trovato here

4

build file:

<target name="print-version"> 
    <echo>Java/JVM version: ${ant.java.version}</echo> 
    <echo>Java/JVM detail version: ${java.version}</echo> 
</target> 

uscita:

[echo] Java/JVM version: 1.5 
[echo] Java/JVM detail version: 1.5.0_08 
0

According to the Ant Documentation, impostare JAVACMD variabile d'ambiente per completare il percorso al java.exe della versione di JRE che si desidera eseguire Ant sotto.

0

Per impostazione predefinita, Ant considera il JRE come la versione JRE dello spazio di lavoro. È necessario modificare in base alla versione richiesta seguendo il seguito.

In Eclipse:

  • clic destro sul build.xml click "Esegui come", cliccare su "strumento esterno Configurazioni ..." Selezionare la scheda JRE.

  • Selezionare il JRE che si sta utilizzando.

  • Rieseguire l'attività, ora dovrebbe andare bene.

Problemi correlati