I installed Ant on a Fedora 5 machine using yum, but Ant does not launch. I get this error message:
[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.
I have set the following environment variables:
JAVA_HOME = /usr/java/latest
ANT_HOME = /usr/bin
Ant is installed at /usr/bin/ant
.
I have also come across this post, and it seems that the JAVAVER_LIBDIR
variable does not point to something that exists. I set a symbolic link, like the post suggests cleared the issue up for the author, but it did not fix things for me.
[bash]# sudo ln -s /usr/share/java /usr/share/java-1.6.0
Edit: I have also set a symbolic link that addressed a similar problem with the JAVAVER_JNIDIR
variable:
[bash]# sudo ln -s /usr/lib/java /usr/lib/java-1.6.0
I now get a different error message:
[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 to Google these error messages...
In my case '
lib
' folder which has all jars includingwas under
I copied lib folder under
because after running 'ant --execdebug' i found ant commands are looking for 'lib' folder under '1.9.6' folder.
after that change ant commands started working fine.
I've just met similar issue on Fedora 18.
To make long story short, run:
Apparently, this problem is specific to
java-1.7.0-openjdk
because similar empty directories for all other JDK versions existed.DETAILS
There was single-line error after running
ant
:The problem was somewhere in
/usr/share/java-utils/java-functions
script which tried to setJAVAVER_JNIDIR
/JAVAVER_LIBDIR
variables to refer to the directories above. Due to inappropriate error message redirection to stdout, some variables got assignments like:Creating the directories according to the convention set by all other java versions is the cleanest solution.
I had such problem on Fedora 16 but in my case
xerces
packages andxml-commons-apis
was ok. Actually,--execdebug
is very helpful and it printed that ant cannot find a directory at/usr/lib/jvm-exports/YOUR_JDK
. This was because I switched from openjdk to oracle's jdk and the directory of former version of jdk (/usr/lib/jvm-exports/java-1.6.0-openjdk-1.6.0.0
) left there but there was not the one of my current version (/usr/lib/jvm-exports/jdk1.6.0_32
). These directories includes only a bunch of soft links that point to particular jre's jars so I've taken following steps:jdk1.6.0_32
)# cp -av java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
# cd /usr/lib/jvm-exports/jdk1.6.0_32
# ln -s -f $JAVA_HOME/jre/lib/rt.jar jaas-1.6.0.0.jar
Obviously,
$JAVA_HOME
is set correctly (on the new jdk version). It solved my problem and can be another cause excepting the causes mentioned above.I think that the ANT_HOME should be set with '/usr/bin/ant'. I have that configuration (CENTOS 5).
My sh script under '/etc/profile.d' has this conf.:
I hope it helps you.
I had a similar problem but the following fixed it for me: