2009-02-21 12 views
27

Robię java pracy na serwerze klasy, gdzie nie mam root. Ilekroć próbuję skompilować za pomocą ant, wskazuje na zły katalog (/usr/tomcat zamiast /usr/tomcat/jre).Jak zmienić kod JAVA_HOME dla ant?

Jedną z rzeczy, które otrzymaliśmy podczas zakładania naszych kont użytkowników było dodanie export JAVA_HOME=/usr/tomcat/jre do pliku .bashrc. Nie wiem, czy to miało zająć się problemem, ale tak się nie wydaje.

Jak więc zmienić właściwość JAVA_HOME dla ant, ale tylko wtedy, gdy uruchomię mrówkę?

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

Problemem jest to, kiedy normalnie uruchomić mrówka otrzymuję ten błąd:

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

Czy masz zestaw ANT_HOME? – laz

+0

echo $ ANT_HOME zwraca nic, więc prawdopodobnie nie. Zajrzę do tego, ale przydadzą się jakiekolwiek informacje. –

Odpowiedz

6

JAVA_HOME powinien wskazywać na którym JDK nie jest zainstalowany nie JRE.

Więc jeśli wpiszesz ls $ JAVA_HOME, co widzisz? jeśli robisz ls $ JAVA_HOME/bin/czy widzisz javac?

Jeśli pierwszy nie działa, nie ma wskazania JAVA_HOME wskazującego właściwy katalog. Jeśli drugi nie działa, musisz wskazać JAVA_HOME w JDK zamiast JRE.

+0

Myślę, że masz na myśli $ JAVA_HOME/bin/(przekreślenia ukośne) – wds

+0

ack - moi uczniowie używają zbyt wiele Windows :-) Dzięki! – TofuBeer

+1

Masz rację; jednak "ant.java.home "właściwość * zawsze * wskaże jre, ponieważ poprawia ona tę właściwość z java.lang.System (który z definicji jest JRE pod JDK) Aby definitywnie ustawić środowisko Java na ant, określ lokalizacje java za pomocą $ { env.JAVA_HOME} z dokładnymi ścieżkami – ingyhere

9

Można utworzyć własny skrypt do uruchamiania mrówki, np. o nazwie ant.sh:

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

, a następnie uruchom skrypt.

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

lub cokolwiek mrówka cel chcesz uruchomić

+1

przy użyciu 'jre' wont pracy, nie zawiera narzędzi, których mrówka prosi o –

+0

@Carlos Heuberger: całkiem poprawiłem, że –

+2

Wypróbowałem to, nie wpłynęło na JAVA_HOME anta –

5

Patrząc na skrypcie dla powołując mrówkę, możliwe jest, że wartość $ JAVA_HOME zestaw do powłoki w .bashrc może być zmieniona w plikach /etc/ant.conf, $ HOME/.ant/ant.conf i $ HOME/.antrc. Jeśli uruchomisz bash -x < ścieżkę do skryptu ant >, będzie on emitować informacje debugowania, które powinny pomóc ci wyśledzić, gdzie nadpisuje $ JAVA_HOME.

1

JAVA_HOME musi wskazywać na dom JDK, jeśli próbujesz skompilować kod. Sprawdź, czy istnieje "/ usr/tomcat/jre/bin/javac". Wątpię, żeby tak było.

Jeśli nie masz JDK, możesz obejść go, pobierając bibliotekę ECJ (Eclipse Compiler), upuszczając ją w "~/.ant/lib" i dodając właściwość systemową do linii poleceń aby użyć tego kompilatora - zapoznaj się z instrukcją Ant, aby uzyskać szczegółowe informacje.

http://ant.apache.org/

+0

Dokładniej przeczytaj ten komunikat o błędzie: Nie można znaleźć tools.jar. Oczekuje się, że znajdzie go w /usr/tomcat/lib/tools.jar Wskazuje, że JAVA_HOME jest rzeczywiście/usr/tomcat zamiast/usr/tomcat/jre. Z jakiegoś powodu niepoprawna wartość dla JAVA_HOME jest nadrzędna dla wartości powłoki: – laz

+0

@laz to naprawdę nie ma znaczenia - podstawową przyczyną jest to, że O P próbuje użyć JRE do uruchomienia Anta, podczas gdy powinien używać JDK, jak wskazał nbeyer – eis

1

Podczas korzystania Bash prostu spróbuj tego:

$ export JAVA_HOME=/usr/tomcat/jre 
0

będzie trzeba zmienić ścieżkę do katalogu JAVA_HOME Java SDK zamiast katalogu Java RE. W Windows możesz to zrobić za pomocą polecenia set w wierszu poleceń.

np.

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

4

na moim Windows 7 ustawienie maszyny:

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

nie działa. Ale ustawienie:

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

pracował.

+0

. Również pracował dla mnie. Dzięki! – Alexis

1

Ustaw JRE w projekcie (właściwości projektu -> Java Build Path-> Biblioteki, zazwyczaj ostatni wpis) lub globalne ustawienia domyślne w preferencjach (Java-> Installed JRE) do JDK, a nie JRE.

-1

java_home zawsze wskazuje na jdk, kompilator, który dał ci klasy, , a jr jest sposobem, że twoja przeglądarka lub cokolwiek będzie skompilowanymi klasami, więc musi mieć dopasowanie między jdk i jre w wersji.

+1

Wyedytowałem twój email na to pytanie w meta: http://meta.stackexchange.com/questions/89965/what-to-do-when-questioner-posts-email-address-for-responses Generalnie to też idzie dla odpowiedzi. – gary

3

Chociaż zmienna JAVA_HOME ustawiony prawidłowo, ant może używać skonfigurowany JRE w każdym build.xml lub dowolnych plików kompilacji.

Aby sprawdzić, jakiej wersji JRE używa ant, kliknij prawym przyciskiem myszy plik kompilacji -> wybierz mrówkę kompilacji, która wyświetla szczegóły dotyczące zadań do wyboru itd., Wybierz środowisko JRE, którego chcesz użyć.

Zaleca się korzystanie z ustawień poziomu projektu lub tylko na poziomie obszaru roboczego.

0

spróbować z tym:

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

Podczas uruchamiania Ant z powłoki, nie trzeba do export JAVA_HOME pierwszym, który będzie ustawić tę zmienną dla aktualnej powłoki i wszystkich przyszłych poleceń, zamiast używać

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

Istnieją 2 sposoby zmieniania kompilatora:

  • export JAVA_HOME=/path/to/jdk przed wami uruchom Ant.
  • Set <javac exectuable="/path/to/javac">

Innym rozwiązaniem byłoby dodanie odpowiedniego tools.jar do ścieżki klasy, ale ta ścieżka jest zazwyczaj jeśli Ant jest uruchamiany z innych narzędzi, takich jak Maven.

Więcej informacji na temat tych (lub innych) opcji zmiany Kompilatora Java w Ant, patrz np. this article.

Powiązane problemy