Tomcat: "java.lang.NoClassDefFoundError". javac klappt aber
Markus Möller
- java
Hallo zusammen!
Ich habe soeben Tomcat 4.0.1 installiert. Klassenpfad ist so eingerichtet, dass das kompelieren der Klassen einwandfrei funktioniert, nur wenn ich die Servlets starte, meldet der Server eine "java.lang.NoClassDefFoundError"-Exception.
Die Verzeichnisstruktur sieht wie folgt aus:
c:\prog
.......\source
..........\web (Hier liegt mein Servlet-Code "Countdown.java")
..........\thirdparty
.............\oreilly
................\lib (Hier liegt cos.jar)
.......\build
..........\web
.............\WEB-INF
................\classes (Hier wirds hincompiliert "Countdown.class")
Mein Klassenpfad (verkürzt dargestellt):
CLASSPATH=.;C:\PROGRA~1\PROGRA~1\jdk1.3.1_01\lib\tools.jar;C:\Programme\Programmierung\Apache Tomcat 4.0\common\lib\servlet.jar;C:\Programme\Programmierung\JSP\jswdk-1.0.1\lib\jspengine.jar;C:\prog\source\thirdparty\oreilly\lib\cos.jar;
Mein Servlet liegt in "c:\prog\source\web" und importiert "com.oreilly.servlet.MultipartResponse". Diese Klasse liegt im Archiv "c:\prog\source\thirdparty\oreilly\lib\cos.jar", die Teil meines Klassenpfades ist. Wie gesagt, meldet "javac" hier keine Fehler.
Nun starte ich das Servlet mit "http://localhost:8080/prog/servlet/Countdown" und bekomme die Fehlermeldung:
java.lang.NoClassDefFoundError: com/oreilly/servlet/MultipartResponse
at Countdown.doGet(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) blabla
Servelts, die keine O'Reilly-Klassen importieren, klappen übrigens ohne Probleme.
Wenn ich im "WEB-INF\classes"-Verzeichnis die Unterverzeichnisse "com\oreilly\servlet" anlege und "MulitpartResponse.class" dorthin entpacke, funktionierts. Es muss aber doch einen Weg geben, so dass ich nur das jar-Archiv in einer Pfadangabe haben muss.
Habe ich vielleicht einen Eintrag in der Confi-Datei "server.xml" oder vielleicht in "WEB-INF\web.xml" vergessen?!
Wer kann mir helfen?
Hi
c:\prog
.......\source
..........\web (Hier liegt mein Servlet-Code "Countdown.java")
..........\thirdparty
.............\oreilly
................\lib (Hier liegt cos.jar)
.......\build
..........\web
.............\WEB-INF
................\classes (Hier wirds hincompiliert "Countdown.class")
jar files müssen bei webapps im web-inf/lib liegen,
also das jar file dahinkopieren, und dann sollte es klappen
vorallem da es ja ungepackt in web-inf/classes klappt.
Gruss
Daniela Koller
jar files müssen bei webapps im web-inf/lib liegen,
also das jar file dahinkopieren, und dann sollte es klappen
vorallem da es ja ungepackt in web-inf/classes klappt.
...und anschliessend den Tomcat-Dienst neu starten, damit er die Klassen in den jars auch findet.
Vielen Dank! Das war's.
Tja, kaum macht man's richtig, schon funktionierts!