Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的ant配置有什么问题?_Ant_Fedora - Fatal编程技术网

我的ant配置有什么问题?

我的ant配置有什么问题?,ant,fedora,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

我使用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.
[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
我已经设置了以下环境变量:

JAVA_HOME = /usr/java/latest
ANT_HOME = /usr/bin
Ant安装在
/usr/bin/Ant

我也遇到过,
JAVAVER\u LIBDIR
变量似乎没有指向存在的东西。我设置了一个象征性的链接,就像帖子建议的那样,为作者澄清了这个问题,但它并没有为我解决问题

[bash]# sudo ln -s /usr/share/java /usr/share/java-1.6.0
Edit:我还设置了一个符号链接,解决了
JAVAVER_JNIDIR
变量的类似问题:

[bash]# sudo ln -s /usr/lib/java /usr/lib/java-1.6.0
我现在收到一条不同的错误消息:

[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.
[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

我想ANT_HOME应该设置为“/usr/bin/ANT”。我有那个配置(CENTOS 5)

我在“/etc/profile.d”下的sh脚本有以下配置:

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

我希望它能帮助您。

尝试安装
xerces-j2-xml-api
我遇到了类似的问题,但以下操作为我解决了此问题:

sudo yum install xml-commons-apis

我在Suse,SLES 11上也有同样的问题。Hidayath的回答解决了这个问题。 假设现成的包存储库:
me@sles:~>sudo zypper安装xerces-j2-xml-api

我在Fedora 16上遇到了这样的问题,但在我的情况下,
xerces
软件包和
xml commons API
是可以的。实际上,
--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\u 32
)没有。这些目录只包含一组指向特定jre JAR的软链接,因此我采取了以下步骤:

  • 为当前版本的jdk创建新目录(
    jdk1.6.0\u 32
  • 将所有链接从openjdk目录复制到新目录
    \cp-av java-1.6.0-openjdk-1.6.0.0.x86_64/*jdk1.6.0_32/
  • 纠正所有这些错误,使其指向oracle的jar,例如:
    \cd/usr/lib/jvm exports/jdk1.6.0\u 32
    \ln-s-f$JAVA\u HOME/jre/lib/rt.jar jaas-1.6.0.0.jar
  • 显然,
    $JAVA_HOME
    设置正确(在新的jdk版本上)。
    它解决了我的问题,可能是除上述原因之外的另一个原因。

    我刚刚在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版本设置的约定创建目录是最干净的解决方案

    sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0
    
    我通过下载tar文件并将其放在/opt中安装了sunjava1.7.x。因为我没有进行yum安装,所以没有创建这些目录。我的JAVA_主页设置为:

    $ echo $JAVA_HOME/
    /opt/jdk1.7.0_03/
    
    正如其他人所说,运行以下程序提供了非常有用的调试:

    ant --execdebug
    

    在我的例子中,我正在设置我的
    ANT\u HOME
    变量,但在系统路径中附加了
    /bin/
    以供使用-此HOME变量不应是二进制目录,请使用以下方法设置ANT hime,并将二进制目录添加到env路径中

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

    我在OSX上收到了完全相同的错误消息,但有人建议取消ANT_HOME的设置,结果成功了。

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

    在我的例子中,在更新到OpenJDK1.8.0之后,我无法再运行ant

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


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

    在我的例子中,“
    lib
    ”文件夹包含所有jar,包括

    ant-launcher.jar
    

    /usr/local/Cellar/ant/1.9.6/libexec/ 
    
    我在下面复制了lib文件夹

    /usr/local/Cellar/ant/1.9.6/
    
    因为在运行“ant--execdebug”之后,我发现ant命令正在“1.9.6”文件夹下查找“lib”文件夹


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

    运行
    哪个ant
    ,以了解
    ant\u home
    是否已设置。如果没有,请在下面运行相应的路径以设置
    ant\u home

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

    这是问题的一部分。谢谢我还没有完全修好所有的东西,但这在整个过程中起了作用。谢谢!!使用
    --execdebug
    发现,我也遇到同样的问题,
    类路径设置不正确。非常感谢。这也让我对java-1.8.0感到疯狂!这个解决方案帮助我解决了Suse SLES11盒子上的相同问题-路径只是略有不同。是的,ant--execdebug
    !这解决了我在SLE11SP4上使用
    ant
    和JDK8时遇到的
    找不到这个JVM的xml commons API Java扩展的错误。