我的蚂蚁配置有什么问题?

时间:2010-02-25 17:50:17

标签: ant fedora

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

我也遇到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

向Google发送这些错误消息...

12 个答案:

答案 0 :(得分: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变量来引用上面的目录。由于不正确的错误消息重定向到stdout,一些变量得到了如下的分配:

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

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

答案 1 :(得分: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 :(得分: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";

我希望它可以帮到你。

答案 3 :(得分:6)

我有类似的问题,但以下修复了它:

sudo yum install xml-commons-apis

答案 4 :(得分:4)

我今天收到了相同的错误消息,但是由不同的原因触发了。

就我而言,在我更新到OpenJDK 1.8.0后,我再也无法运行ant了。

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

升级到最新版本的jpackage-utils RPM为我解决了这个问题。

答案 5 :(得分:3)

我在Fedora 16上遇到过这样的问题,但在我的情况下xerces包和xml-commons-apis都没问题。实际上,--execdebug非常有用,它打印出ant无法在/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. 为当前版本的jdk(jdk1.6.0_32
  2. 创建一个新目录
  3. 将openjdk目录中的所有链接复制到新目录
    # cp -av java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
  4. 纠正所有这些因为他们指向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
  5. 显然,$JAVA_HOME设置正确(在新的jdk版本上)。 它解决了我的问题,除了上面提到的原因外,还可能是另一个原因。

答案 6 :(得分:2)

尝试安装xerces-j2-xml-apis

答案 7 :(得分:2)

在我的情况下,我正在设置我的ANT_HOME变量,但在系统路径中附加/bin/ - 此主变量不应该是二进制目录,请使用以下命令设置一个蚂蚁hime,并将二进制目录添加到env路径。

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

答案 8 :(得分:1)

我在Suse,SLES 11上遇到了同样的问题.Hidayath的回答https://stackoverflow.com/a/4849302/1211900解决了这个问题。 假设开箱即用的软件包存储库:     我@ SLES:〜&GT; sudo zypper install xerces-j2-xml-apis

答案 9 :(得分:1)

我在OS X上有完全相同的错误消息,但是有人建议取消设置ANT_HOME并且这样做有效。 https://github.com/Homebrew/homebrew/issues/32851

答案 10 :(得分:0)

在我的情况下&#39; lib&#39;包含所有罐子的文件夹,包括

ant-launcher.jar

之下
/usr/local/Cellar/ant/1.9.6/libexec/ 

我在

下复制了lib文件夹
/usr/local/Cellar/ant/1.9.6/

因为在跑完&ant; execdebug&#39;我发现蚂蚁命令正在寻找&#39; lib&#39; &#39; 1.9.6&#39;下的文件夹文件夹中。

在更改之后,ant命令开始正常工作。

答案 11 :(得分:0)

运行 which ant 以了解 ant_home 是否设置。如果没有,请使用相应的路径在下面运行以设置 ant_home

export ANT_HOME=/ade_autofs/gd29_3rdparty/ANT_1.7.1_GENERIC.rdd/080925/ant 
export PATH=$ANT_HOME/bin:${PATH}
相关问题