2010-02-25 36 views
30

我使用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 

蚂蚁安装在/usr/bin/ant

我也遇到了this post,看来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 

关闭谷歌这些错误消息...

回答

11

我认为应该使用'/ usr/bin/ant'来设置ANT_HOME。我有这样的配置(CENTOS 5)。根据 '/etc/profile.d中'

我sh脚本有这样的conf:

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

我希望它可以帮助你。

+0

这是问题的一部分。谢谢。我仍然没有完全解决所有问题,但是这样做一直有帮助。 – 2010-02-25 18:10:10

2

尝试安装xerces-j2-xml-apis

+0

这解决了在SLES 11 SP4上使用'ant'和JDK 8的'无法找到此JVM的xml-commons-apis Java扩展'错误。 – jaume 2016-04-18 14:46:44

6

我有一个类似的问题,但下面的固定对我来说:

sudo yum install xml-commons-apis 
3

我在Fedora 16,但在我的情况xerces包过这样的问题,xml-commons-apis是确定。其实,--execdebug是非常有用的,它打印,蚂蚁无法找到/usr/lib/jvm-exports/YOUR_JDK目录。这是因为我从openjdk切换到oracle的jdk,并且之前版本的jdk(/usr/lib/jvm-exports/java-1.6.0-openjdk-1.6.0.0)的目录仍然存在,但是没有我当前的版本(/usr/lib/jvm-exports/jdk1.6.0_32)。这些目录只包括了一堆指向特定的JRE的罐子所以我采取了以下步骤软链接:

  1. 从在OpenJDK的各个环节创造的JDK(jdk1.6.0_32
  2. 复制当前版本的新目录目录复制到新目录
    # cp -av java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
  3. 正确个个使它们指向Oracle的罐子,例如:
    # cd /usr/lib/jvm-exports/jdk1.6.0_32
    # ln -s -f $JAVA_HOME/jre/lib/rt.jar jaas-1.6.0.0.jar

显然,$JAVA_HOME设置正确(在新的jdk版本上)。 它解决了我的问题,可能是除上述原因之外的另一个原因。

26

我刚刚碰到类似的问题在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变量指某处上面的目录。由于不适当的错误信息重定向到标准输出,一些变量有像分配:

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

根据所有其他的Java版本设置的约定创建的目录是干净的解决方案。

+3

谢谢!使用'--execdebug'找到,同样的问题发生在我身上,'classpath'没有正确设置。 – 2014-01-14 11:19:50

+3

非常感谢。这也让我对java-1.8.0疯狂了! – 2015-03-13 20:07:29

+0

该解决方案帮助我解决了Suse SLES11盒上的相同问题 - 程序仅稍有不同。耶为'蚂蚁--execdebug'! – zb226 2017-01-23 09:55:04

13
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 
2

在我的情况,我设置我的ANT_HOME变量,但还追加使用/bin/在系统路径中 - 这个home变量不应该是二进制目录,使用以下设置一个ant hime,并将二进制目录添加到env路径。

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

@Downvoter,请解释一下? – 2016-06-13 14:16:53

4

今天我有同样的错误信息,但由不同的原因触发。

在我的情况下,我更新到OpenJDK 1.8.0后,我不能再运行ant。

问题在于java -fullversion命令的输出稍有变化,而/usr/share/java-utils/java-functions不再正确地理解它。

升级到最新版本的jpackage-utils RPM为我解决了它。

0

在我的情况下,其拥有所有罐子 'lib' 文件夹,包括

ant-launcher.jar 

正在

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

我,因为运行的“蚁后

/usr/local/Cellar/ant/1.9.6/ 

下复制lib文件夹 - -execdebug'我发现ant命令正在'1.9.6'文件夹下查找'lib'文件夹。

之后改变蚂蚁命令开始工作正常。