2009-06-04 17 views
63

Używam Ant 1.7.0 i zainstalowałem java 1.6, która jest w JAVA_HOME.Ant używa złej wersji java

Chcę budować projektu przy użyciu Java 1.5, więc mam eksportowane JAVA_HOME być moim Java 1.5 katalogiem.

java -version 

mówi "1.5". Po uruchomieniu Anta używa java 1.6.

+2

Jakiego systemu operacyjnego używasz? –

+1

Możesz napisać skrypt wsadowy, aby dokładnie określić, jak go uruchomić. Jeśli jest to po prostu kompilacja, możesz podać wersję w komendzie, na przykład:

Odpowiedz

17

Według ant manual ustawienie JAVA_HOME powinien pracować - czy jesteś pewien, że zmienił ustawienie jest widoczne na mrówki?

Alternatywnie, można użyć zmiennej JAVACMD.

+1

Mam problem z samem atm i JAVA_HOME wskazuje na właściwy JDK, jednak ant jest nadal zgłaszanie niewłaściwej wersji java. –

12

Run mrówka w trybie opisowym: ant -v i szuka wskazówek.

+1

To bardzo mi pomogło. Najpierw próbowałem zbudować projekt w bibliotece z jdk 1.8. Później odkryłem, że muszę zbudować go na 1.7, więc zainstalowałem jdk 1.7, zmieniłem JAVA_HOME, ale nadal kontynuowałem budowanie go z 1.8. Używając 'ant -v' odkryłem, że ant poprawnie używa jdk1.7, ale kompilacja pomijała wszystkie klasy w folderze tymczasowym, ponieważ były już tam z powodu mojej wcześniejszej próby. Więc wszystko, co zrobiłem, to skasowanie folderu tymczasowego i odtworzono je, tym razem z jdk 1.7, tak jak chciałem. Może pomóc komuś –

5

Można również określić w zadaniu javac jaki poziom zgodności (1.4, 1.5, 1.6), które chcesz użyć, można ustawić „Źródło” i „docelowy” wartości poziomu, sprawdź docs tutaj: Javac task documentation

+1

Aby zagwarantować kompatybilność, dodaj także opcję '-bootclasspath' podczas kompilacji. –

14

Możesz użyć właściwości target i źródła w znaczniku javac, aby ustawić docelowe środowisko wykonawcze. Poniższy przykład skompiluje dowolny kod źródłowy do wersji docelowej 1.4 na każdym kompilatorze obsługującym wersję 1.4 lub nowszą.

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

Uwaga: „SRCDIR” i „DESTDIR” są wartości nieruchomości ustawić gdzie indziej w skrypcie kompilacji, np <property name="classes" value="c:/classes" />

10

Można to osiągnąć z następujących kroków, jeśli używasz Eclipse IDE:

  1. prawym przyciskiem myszy na zadanie w pliku kompilacji ant (build.xml).

  2. Najedź "Uruchom jako", kliknij na "External Konfiguracje Narzędzie ...".

  3. Dodaj poniższych do "Argumenty":

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

prostu miał ten problem, stało się to dlatego, że po raz pierwszy dodany plik build do mrówki-view, gdy domyślne JRE wynosiła 1,6.

Nie było środowiska JRE dla konkretnego projektu, a ja zmieniłem domyślną wartość na 1.5, nawet zaćmienie działało w wersji 1.5, a JAVA_HOME także na 1,5. Uruchamiając ant target z linii poleceń używał środowiska JRE 1.5, ale w środowisku Eclipse nadal używało 1.6.

Musiałem kliknąć prawym przyciskiem myszy obiekt docelowy ant, wybrać opcję Uruchom jako ... i zmienić środowisko JRE na karcie JRE. To ustawienie jest zapamiętywane dla kolejnych serii.

+5

Właśnie sobie sprawę, że pytanie w ogóle nie wspomniało o Eclipse. Moja odpowiedź dotyczy opisanego problemu podczas korzystania z Eclipse. –

+1

Dziękuję za zakończenie kilku godzin frustracji. –

+0

jeśli nie korzystasz z zaćmienia, to sprawdź moją odpowiedź na dole. –

1

Jeśli uruchomisz Anta z zaćmienia, zaćmienie użyje jdk lub jre skonfigurowanego w ścieżce klasy (ścieżka budowania).

+0

Tak, domyślnie, ale może być skonfigurowany dla każdego pliku ant, w inny sposób, więc aby sprawdzić, każdy z nich może być kluczowy ... –

+6

Aby dowiedzieć się na pewno, jakiej wersji używa ant mrówki: '' – dmolony

+0

Nauka o $ {ant.java.version} była dla mnie wspaniałą rzeczą, dzięki! – javydreamercsw

5

To raczej stare pytanie, ale dodam moje notatki dla przyszłych odniesień.

Miałem podobny problem i naprawiłem go, zmieniając kolejność eksportu w zmiennej PATH.

Na przykład używałem sposób łącząc łańcuchy na mojej ścieżce, wykonując (to tylko przykład):

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

Jeśli moja zmienna PATH już miał Java w nim ostatnia wartość byłaby bez znaczenia, a więc kolejność miałaby znaczenie. Aby rozwiązać ten problem, zacząłem go odwracać, dodając najpierw zmienną, a następnie dodając ścieżkę PATH.

Idąc za tym pomysłem, odwróciłem kolejność eksportowania ANT_HOME. Dodawanie JAVA_HOME przed ANT_HOME.

To może być tylko zbieg okoliczności, ale zadziałało to dla mnie.

+0

To też mi się przydarzyło. Nie byłem pewien, jaki wpis był sprzeczny z JAVA_HOME, ale kiedy umieściłem go na początku ścieżki PATH, zadziałało. – Inversus

26

Easy!

w Eclipse:

  • Kliknij prawym przyciskiem myszy na build.xml

  • kliknij "Uruchom jako", kliknij na "zewnętrzne narzędzie konfiguracjach ..."

  • Wybierz tab JRE. Wybierz środowisko JRE, z którego korzystasz.

Ponownie uruchom zadanie, powinno być już dobrze.

+0

Dzięki, to jest dokładnie to, co musiałem zrobić. –

1

Użyj następujących 2 właściwości javac tagu:

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

wyjaśnieniu właściwości można znaleźć here

4

plik Budowa:

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

wyjściowa:

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

Domyślnie Ant uzna wersję JRE za wersję środowiska JRE obszaru roboczego. Musisz zmienić w zależności od wymaganej wersji, wykonując poniższe czynności.

w Eclipse:

  • Kliknij prawym przyciskiem myszy na build.xml kliknij przycisk "Uruchom jako", kliknij na "zewnętrzne narzędzie Konfiguracje ..." Wybierz zakładkę JRE.

  • Wybierz używane środowisko JRE.

  • Ponownie uruchom zadanie, powinno być już dobrze.