我使用yum在Fedora 5机器上安装了Ant,但Ant没有启动.我收到此错误消息:
[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.
我设置了以下环境变量:
JAVA_HOME = /usr/java/latest ANT_HOME = /usr/bin
Ant安装在/usr/bin/ant
.
我也遇到过这篇文章,似乎JAVAVER_LIBDIR
变量并没有指向存在的东西.我设置了一个符号链接,就像帖子建议为作者清除了问题,但它并没有为我解决问题.
[bash]# sudo ln -s /usr/share/java /usr/share/java-1.6.0
编辑:我还设置了一个符号链接,解决了JAVAVER_JNIDIR
变量的类似问题:
[bash]# sudo ln -s /usr/lib/java /usr/lib/java-1.6.0
我现在得到一个不同的错误消息:
[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
关闭谷歌这些错误消息......
我刚刚在Fedora 18上遇到过类似的问题.
长话短说,运行:
sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0
显然,这个问题是特定的,java-1.7.0-openjdk
因为存在所有其他JDK版本的类似空目录.
细节
运行后出现单行错误ant
:
Error: Could not find or load main class org.apache.tools.ant.launch.Launcher
问题是/usr/share/java-utils/java-functions
脚本中的某个地方试图设置JAVAVER_JNIDIR
/ JAVAVER_LIBDIR
变量来引用上面的目录.由于不正确的错误消息重定向到stdout,一些变量得到的分配如下:
LOCALCLASSPATH='/usr/bin/build-classpath: error: JAVAVER_JNIDIR /usr/lib/java-1.7.0 does not exist or is not a directory'
根据所有其他Java版本设置的约定创建目录是最干净的解决方案.
sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0
我通过下载tar文件并将其放在/ opt中来安装sun java 1.7.x. 因为我没有安装yum,所以没有创建这些目录.我的JAVA_HOME设置为:
$ echo $JAVA_HOME/ /opt/jdk1.7.0_03/
正如其他人所说,运行以下内容提供了非常有用的调试:
ant --execdebug
我认为应该用'/ usr/bin/ant'设置ANT_HOME.我有那个配置(CENTOS 5).
我在'/etc/profile.d'下的sh脚本有这样的配置:
export JAVA_HOME="/usr/local/java"; export ANT_HOME="/usr/local/ant";
我希望它对你有所帮助.
我有类似的问题,但以下修复了它:
sudo yum install xml-commons-apis