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?