2010-02-25 31 views
30

Ho installato Ant su una macchina Fedora 5 usando yum, ma Ant non si avvia. Ottengo questo messaggio di errore:Cosa c'è di sbagliato nella configurazione della mia formica?

[bash]# ant 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher 
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.launch.Launcher 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
Could not find the main class: org.apache.tools.ant.launch.Launcher. Program will exit. 

ho impostare le seguenti variabili d'ambiente:

JAVA_HOME = /usr/java/latest 
ANT_HOME = /usr/bin 

Ant è installato in /usr/bin/ant.

Ho anche trovato this post e sembra che la variabile JAVAVER_LIBDIR non punti a qualcosa che esiste. Ho impostato un collegamento simbolico, come il post suggerisce di chiarire il problema all'autore, ma non ha sistemato le cose per me.

[bash]# sudo ln -s /usr/share/java /usr/share/java-1.6.0 

Edit: Ho anche impostare un collegamento simbolico che ha affrontato un problema simile con la JAVAVER_JNIDIR variabili:

[bash]# sudo ln -s /usr/lib/java /usr/lib/java-1.6.0 

ora ottengo un messaggio di errore diverso:

[bash]# ant --execdebug 
/usr/bin/build-classpath: error: Could not find jaxp_parser_impl Java extension for this JVM 
/usr/bin/build-classpath: error: Could not find xml-commons-apis Java extension for this JVM 
/usr/bin/build-classpath: error: Some specified jars were not found 
exec "/usr/java/latest/bin/java" -classpath "/usr/share/java-1.6.0/ant.jar:/usr/share/java-1.6.0/ant-launcher.jar:/usr/java/latest/lib/tools.jar" -Dant.home="/usr" -Dant.library.dir="/usr/lib" org.apache.tools.ant.launch.Launcher -cp "" 
Buildfile: build.xml does not exist! 
Build failed 

Off a Google questi messaggi di errore ...

risposta

11

Penso che ANT_HOME dovrebbe essere impostato con '/ usr/bin/ant'. Ho quella configurazione (CENTOS 5).

Il mio script sh sotto '/etc/profile.d' ha questo conf .:

export JAVA_HOME="/usr/local/java"; 
export ANT_HOME="/usr/local/ant"; 

Spero che ti aiuta.

+0

Questo era parte del problema. Grazie. Non ho ancora completamente sistemato tutto, ma questo mi ha aiutato lungo la strada. –

2

provare a installare xerces-j2-xml-apis

+0

Questo ha risolto l'errore "Impossibile trovare l'estensione Java xml-commons-apis per questo JVM" che ho ottenuto usando 'ant' e JDK 8 su SLES 11 SP4. – jaume

6

Ho avuto un problema simile, ma il seguente fisso per me:

sudo yum install xml-commons-apis 
1

Ho avuto lo stesso problema su Suse, la risposta di SLES 11. Hidayath https://stackoverflow.com/a/4849302/1211900 risolto. Assumendo out-of-the-box pacchetto repository: mi @ SLES: ~> sudo zypper install xerces-J2-XML-apis

3

ho avuto tale problema su Fedora 16, ma nel mio caso xerces pacchetti e xml-commons-apis era ok . In realtà, --execdebug è molto utile e ha stampato che non è possibile trovare una directory su /usr/lib/jvm-exports/YOUR_JDK. Questo perché sono passato da openjdk a jdk di oracle e la directory della precedente versione di jdk (/usr/lib/jvm-exports/java-1.6.0-openjdk-1.6.0.0) è stata lasciata lì, ma non c'era quella della mia versione attuale (/usr/lib/jvm-exports/jdk1.6.0_32).Queste directory include solo un mucchio di soft link che puntano a vasi particolare di JRE così ho preso seguenti fasi:

  1. creare una nuova directory per la versione corrente del JDK (jdk1.6.0_32)
  2. copia tutti i link da OpenJDK di directory alla nuova directory
    # cp -av java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
  3. corretta tutti loro in modo tale che puntano sul vasetti di Oracle, ad esempio:
    # cd /usr/lib/jvm-exports/jdk1.6.0_32
    # ln -s -f $JAVA_HOME/jre/lib/rt.jar jaas-1.6.0.0.jar

Ovviamente, $JAVA_HOME è impostato correttamente (sulla nuova versione di jdk). Ha risolto il mio problema e può essere un'altra causa, tranne le cause sopra menzionate.

26

ho appena incontrato problema simile su Fedora 18.

Per farla breve, eseguire:

sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0 

A quanto pare, questo problema è specifico per java-1.7.0-openjdk perché simili vuoti directory per tutti esistevano altre versioni di JDK.


DETTAGLI

C'è stato errore single-line dopo l'esecuzione ant:

Error: Could not find or load main class org.apache.tools.ant.launch.Launcher 

il problema era da qualche parte in /usr/share/java-utils/java-functions script che ha cercato di impostare JAVAVER_JNIDIR/JAVAVER_LIBDIR variabili per fare riferimento alla directory sopra. A causa di inadeguato messaggio di errore reindirizzamento a stdout, alcune variabili avuto incarichi come:

LOCALCLASSPATH='/usr/bin/build-classpath: error: JAVAVER_JNIDIR /usr/lib/java-1.7.0 does not exist or is not a directory' 

Creare le directory in base alla convenzione fissato dal tutte le altre versioni di Java è la soluzione più pulita.

+3

Grazie !! trovato usando '--execdebug', lo stesso problema si è verificato con me,' classpath' non viene impostato correttamente. –

+3

Grazie mille. Questo mi stava facendo impazzire con java-1.8.0! –

+0

Questa soluzione mi ha aiutato a risolvere lo stesso problema su una scatola Suse SLES11 - i percorsi erano leggermente diversi. Yay per 'ant --execdebug'! – zb226

13
sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0 

Ho installato sun java 1.7.x scaricando il file tar e inserendolo in/opt. Perché non ho fatto un yum installare queste directory non sono state create. Il mio JAVA_HOME sia impostato su:

$ echo $JAVA_HOME/ 
/opt/jdk1.7.0_03/ 

Come qualcun altro ha detto, lanciando il seguente fornito di debug molto utile:

ant --execdebug 
2

Nel mio caso, mi stava tramontando mia variabile ANT_HOME, ma aveva /bin/ aggiunto per l'uso nel percorso di sistema - questa variabile home non dovrebbe essere la directory binaria, utilizzare quanto segue per impostare un ant hime e aggiungere la directory binaria al percorso env.

export ANT_HOME=/opt/apache-ant-1.9.4 
export PATH=$ANT_HOME/bin:$PATH 
+0

@Downvoter, per favore spieghi? –

4

Ho ricevuto lo stesso messaggio di errore oggi, ma attivato da una causa diversa.

Nel mio caso, dopo l'aggiornamento a OpenJDK 1.8.0, non potevo più eseguire ant.

Il problema lied con il fatto che l'uscita del comando java -fullversion era cambiato leggermente, e la /usr/share/java-utils/java-functions più correttamente compreso.

L'aggiornamento all'ultima versione del jpackage-utils RPM lo ha risolto per me.

0

Nel mio caso 'lib' cartella che ha tutti i vasi tra cui

ant-launcher.jar 

era sotto

/usr/local/Cellar/ant/1.9.6/libexec/ 

ho copiato cartella lib sotto

/usr/local/Cellar/ant/1.9.6/ 

perché dopo aver eseguito 'ant - -execdebug 'ho trovato che i comandi ant stanno cercando la cartella' lib 'nella cartella' 1.9.6 '.

dopo tale modifica i comandi della form hanno iniziato a funzionare correttamente.

Problemi correlati