2014-01-06 6 views
5

Ich verwende Ant 1.9.3 und Tomcat Version 8.0. Ich verwende das Ziel "Ant deploy", um Webanwendungen mit den Anmeldeinformationen manager im Apache Tomcat bereitzustellen. Das deploy Ziel schlägt mit folgenden Ausnahme:Bereitstellen der Webanwendung mit Ant-Ergebnissen in 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 

Als ich versuchte, die Klasse Base64 im Paket org\apache\tomcat\util\codec\binary\, die in tomcat-util.jar zu finden, und es ist in dem Classpath, die ich durch ein Echo in Ant-Build überprüft habe Datei.

Ich bin nicht in der Lage, das Problem zu lösen.

+0

Sie müssen die ANT, die Sie verwenden, mit uns versorgen, um Ihr Problem zu beheben. Sie geben an, dass sich das Jar im Classpath befindet, der JVM-Fehler jedoch anders. Ich vermute, dass es ein Problem mit der Art und Weise gibt, wie der tomcat "deploy" Task in Ihrem Build deklariert wurde. –

+0

Ich habe dieses Problem auch mit 1.9.4. Ich habe den Text aus der Antwort unten zu meiner Datei build.xml im Pfadabschnitt hinzugefügt, erhalte aber genau den gleichen Fehler wie zuvor. Ich bin mir nicht sicher, wie ich in die tomcat-util.jar-Datei schauen kann, wie es das OP getan hat, ohne eine Menge von dem zu bekommen, was ich für Java-Bytecode halte, also weiß ich nicht, wie ich es verifizieren soll. Hier ist ein [link] (http://docs.spring.io/docs/Spring-MVC-step-by-step/part1.html) zu dem Tutorial, das ich verwende. Es gibt ein paar subtile Versionsfehler, die ich durchgemacht habe; Dieser kommt nach unten, wenn der Benutzer aufgefordert wird, "Ameisenliste" aufzurufen. – kurofune

Antwort

1

Bitte stellen Sie sicher, dass Sie tomcat-util.jar im Klassenpfad wie folgt hinzugefügt haben.

<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

Hallo, in welcher Datei sollte ich diesen XML Code einfügen? – leaf

6

Für den Fall, jemand läuft in das gleiche Problem, das ich wurde:

Ich war nach dem Tutorial auf den Tomcat website und ich lief in das gleiche Problem, wenn ich NoClassDefFoundErrorant install auszuführen versucht.

Das Tutorial erwähnt, dass Sie $CATALINA_HOME/lib/catalina-ant.jar (enthält den Implementierungscode für die Ant benutzerdefinierte Aufgaben) an die lib Verzeichnis Ihrer Ant-Installation kopieren.

Es nicht erwähnen Sie jedoch, dass Sie das gleiche für tomcat-util.jar tun müssen. Sobald ich tomcat-util.jar in mein Ant-Verzeichnis kopiert habe, haben die Dinge angefangen zu arbeiten (source).

$CATALINA_HOME ist das Verzeichnis Ihrer Installation Tomcat, z.B. /usr/share/tomcat8

Verwandte Themen