2014-01-06 62 views
5

我正在使用Ant 1.9.3和Tomcat版本8.0。我正在使用Ant deploy目标,使用manager凭据在Apache Tomcat中部署Web应用程序。该deploy目标失败,出现以下异常:使用Ant部署Web应用程序会导致NoClassDefFoundError

java.lang.NoClassDefFoundError: 
org/apache/tomcat/util/codec/binary/Base64 
     at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalina 
Task.java:204) 
     at org.apache.catalina.ant.DeployTask.execute(DeployTask.java:196) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav 
a:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.Target.execute(Target.java:435) 
     at org.apache.tools.ant.Target.performTasks(Target.java:456) 
     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) 
     at org.apache.tools.ant.Project.executeTarget(Project.java:1364) 
     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe 
cutor.java:41) 
     at org.apache.tools.ant.Project.executeTargets(Project.java:1248) 
     at org.apache.tools.ant.Main.runBuild(Main.java:851) 
     at org.apache.tools.ant.Main.startAnt(Main.java:235) 
     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 
     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.codec.binary 
.Base64 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
     ... 19 more 

当我试图找到类Base64在包org\apache\tomcat\util\codec\binary\这是tomcat-util.jar,这是我已经在Ant构建回声验证类路径文件。

我无法解决问题。

+0

您需要提供您正在使用的ANT来解决您的问题。您声明该jar位于类路径中,但JVM错误另有说明。我怀疑这是在构建中声明了tomcat“deploy”任务的一个问题。 –

+0

我也遇到了1.9.4的问题。我已经将下面的答案中的文本添加到我的build.xml文件的路径部分,但是得到的错误与以前完全相同。我不确定如何看待tomcat-util.jar文件,因为OP没有得到一堆我认为是Java字节码的东西,所以我不知道如何验证。这里是我正在使用的教程的[链接](http://docs.spring.io/docs/Spring-MVC-step-by-step/part1.html)。我遇到了一些微妙的版本错误,当用户被要求调用'ant list'时,这个指向底部。 – kurofune

回答

1

请确保您已在类路径中添加了tomcat-util.jar,如下所示。

<path id="catalina-ant-classpath"> 
    <!-- We need the Catalina jars for Tomcat --> 
    <!-- * for other app servers - check the docs --> 
    <fileset dir="${appserver.lib}"> 
     <include name="catalina-ant.jar"/> 
     <include name="tomcat-util.jar"/> 
    </fileset> 
</path> 
+0

嗨,我应该把这个XML代码放在哪个文件中? – leaf

6

万一有人跑进我有同样的问题:

我在Tomcat website以下教程和我遇到同样的问题NoClassDefFoundError当我试图运行ant install

本教程中提到,你必须复制$CATALINA_HOME/lib/catalina-ant.jar (其中包含了Ant的自定义任务的实现代码)到lib目录中的Ant安装。

It 不是但是,请注意,您需要为tomcat-util.jar做同样的事情。只要我将tomcat-util.jar复制到我的Ant目录中,事情就开始起作用(source)。

$CATALINA_HOME是Tomcat安装,例如的目录/usr/share/tomcat8

相关问题