微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ant失败:线程“main”中的exceptionjava.lang.NoClassDefFoundError org / apache / tools / ant / launch / Launcher

我在Fedora 17上。我正在尝试使用与Java 7不兼容的ant构build文件来编译项目。所以我决定安装OpenJDK 6.不幸的是,JDK 6从yum版本库中删除,我想它会是容易手动安装。 我了解到没有JAVA_HOMEvariables,而是使用替代系统。 所以我下载了OpenJDK的二进制文件(如果是OSG的话),并使用alternatives --install命令安装java&javac&javaws。 检查java --version和javac --versioncertificate它是成功的。 但奇怪的是ant不再工作了! 当我键入ant --execdebug我收到此消息:

exec "/usr/lib/jvm/openjdk-6.0.24/bin/java" -classpath "/usr/bin/build-classpath: error: JVM_LIBDIR /usr/lib/jvm-exports/openjdk-6.0.24 does not exist or is not a directory:/usr/bin/build-classpath: error: JVM_LIBDIR /usr/lib/jvm-exports/openjdk-6.0.24 does not exist or is not a directory:/usr/lib/jvm/openjdk-6.0.24/lib/tools.jar" -Dant.home="/usr/share/ant" -Dant.library.dir="/usr/share/ant/lib" org.apache.tools.ant.launch.Launcher -cp "" 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:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.urlclassloader.findClass(urlclassloader.java:205) at java.lang.classLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.classLoader.loadClass(ClassLoader.java:266) Could not find the main class: org.apache.tools.ant.launch.Launcher. Program will exit.

与java的情况一样,也没有ANT_HOMEvariables。 但是在安装java 6的时候,甚至还没有ANT_HOME,而且工作正常。 Ant安装在已经在PATH中的/ usr / bin / ant下。

更新:我知道有类似的问题1 , 问题2 。 但是既不能解决我的问题。 例如,添加ANT_HOME = / usr / bin会使情况恶化,即使使用JDK 7,ant也不工作! 由于我不熟悉替代系统,我完全删除了java相关的选项,添加了JAVA_HOME,并修改了PATH。 再次,java和javac工作正常,用java –version返回正确的版本,但ant返回相同的错误。 正如--execdebug告诉我们的,JVM_LIBDIR没有指向正确的位置。 我想这个值是在java.conf文件中设置的,所以我在这里粘贴它(我已经在/ usr / lib / jvm上安装了JDK 6&7):

# System-wide Java configuration file -*- sh -*- # # JPackage Project <http://www.jpackage.org/> # Location of jar files on the system JAVA_LIBDIR=/usr/share/java # Location of arch-specific jar files on the system JNI_LIBDIR=/usr/lib64/java # Location for noarch jar files using arch-specifics jar files JAVAJNI_LIBDIR=/usr/share/java-jni # Root of all JVM installations JVM_ROOT=/usr/lib/jvm # You can define a system-wide JVM root here if you're not using the # default one. # # If you have the a base JRE package installed # (eg java-1.6.0-openjdk): #JAVA_HOME=$JVM_ROOT/jre # # If you have the a devel JDK package installed # (eg java-1.6.0-openjdk-devel): #JAVA_HOME=$JVM_ROOT/java-1.7.0-openjdk-1.7.0.9.x86_64 JAVA_HOME=$JVM_ROOT/openjdk-6.0.24 # Options to pass to the java interpreter JAVACMD_OPTS=

通过在java.conf中注释和取消注释相应的行,就会发现ant和7一起工作正常,并且在6时失败。当我在ant shell的java命令之前回显JVM_LIBDIR时,我收到了user/share/java java.conf。 但ant --execdebug返回了一些奇怪的东西: JVM_LIBDIR /usr/lib/jvm-exports/openjdk-6.0.24 。 那是什么,我该如何解决

ant通过npm安装 – 需要节点0.8.0+,但无法安装?

游戏closuresDevKit> native android build ant error

包org.apache.commons.io不存在错误

从* nix在远程Windows机器上执行exe或bat文件

ant:warning:编码UTF8的不可映射字符

如果您在这里无法解决问题,那么安装多个版本的JDK最简单最安全的方法是什么?

任何帮助,非常感激。

从ant的sshexec传递密码到“su”命令

apache ant无法find或加载主类org.apache.tools.ant.launch.Launcher

避免从locking构build目录的东西中清除失败(并因此构build)

如何设置ANT_HOME与Windows?

如何在Ant build.xml文件中包含外部库?

您在类路径中缺少一个jar。 确保你在lib文件夹中具有所有需要的库,ant从中获取依赖关系。

检查这个类似的问题。

我只能回答最后一个问题。

我们不使用替代系统,而是我们手动管理它。

我们在Ubuntu和CentOS上都做的是,我们总是使用Oracle JDK网站的tar.gz文件,将其解压缩到/ opt(如/opt/jdk_1.7.0_09 )的子文件夹中,并将其链接文件夹(如/opt/default_jdk -> /opt/jdk_1.7.0_09 ),然后设置环境变量,我们将JAVA_HOME指向符号链接,而不是实际的文件夹( JAVA_HOME=/opt/default_jdk )。

这样,如果我们要更改或更新jdk(例如,从JDK 7 upadte 9到JDK 7 upadte 15),我们只需下载tar.gz包,将其解压到另一个文件夹(例如/opt/jdk_1.7.0_15 ),删除旧的符号链接(指向/opt/jdk_1.7.0_09 ),并创建一个指向新文件夹的新链接(例如/opt/default_jdk -> /opt/jdk_1.7.0_15 )。

同样的方式可以处理32位和64位jdks,不同版本的Ant,Maven,Gradle等等。

看起来你的Java安装有些问题。 请参阅http://www.linuxforums.org/forum/red-hat-fedora-linux/151698-problems-tomcat.html以及稍后解决的类似问题&#x3002;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐