Varrius Geschrieben 17. August 2005 Teilen Geschrieben 17. August 2005 Hi, ich bin grad dabei ein Servlet zu schreiben, welches nur ein Benutzernamen und ein Kennwort einlesen soll. Im Hintergrund soll nun eine Methode einer anderen Klasse aufgerufen werden und die einegegebenen Werte als Parameter übergeben werden. Wie muss ich bei einem Tomcat-Server (verwende 5.0.29) ein Servlet richtig integrieren? Hab das umgangen indem ich es zu den Servlet-Examples gepackt hab und die Web.xml angepasst hab. Das Servlet startet dort auch, nur leider kommt folgender Fehler, wenn die fremde Methode aufgerufen wird (durch auskommentieren getestet): HTTP Status 500 - -------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception javax.servlet.ServletException: Servlet execution threw an exception filters.ExampleFilter.doFilter(ExampleFilter.java:101) root cause java.lang.NoClassDefFoundError HTML_Client.doGet(HTML_Client.java:38) HTML_Client.doPost(HTML_Client.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) filters.ExampleFilter.doFilter(ExampleFilter.java:101) In der Zeile 38 steht der Aufruf der fremden Methode, allerdings besteht die doPost Methode nur aus dem Aufruf der doGet Methode. Das Servlet und die andere Klasse wurden mit Eclipse erstellt und kompiliert, danach habe ich alle verwendeten Klassen (.class Dateien) in den Ordner von Tomcat kopiert. Falls noch Fragen offen sind einfach melden Vielen Dank für eure Hilfe, Varrius Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 17. August 2005 Teilen Geschrieben 17. August 2005 Das Servlet und die andere Klasse wurden mit Eclipse erstellt und kompiliert, danach habe ich alle verwendeten Klassen (.class Dateien) in den Ordner von Tomcat kopiert. Und dabei hast du mind. eine Klasse vergessen, nämlich genau die, die in deinem Servlet verwendet wird. Überprüfe nochmal, ob wirklich alles im korrekten Classpath der Web-Application vorhanden ist. Zum java.lang.NoClassDefFoundError schreibt JavaDoc nämlich: Thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found. The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Varrius Geschrieben 17. August 2005 Autor Teilen Geschrieben 17. August 2005 Sofern Tomcat den unter Windows eingegebenen Classpath verwendet, sollten alle Klassen drin sein die Standartmässig benötigt werden. Desweiteren hab ich die .class der Servlet-Klasse, der Klasse deren Methode ich verwende und die Packages kopiert die ich verwende, mir fällt nicht ein was ich noch vergessen haben könnte. Was ich an der Fehlermeldung nicht verstehe ist, das nicht gesagt wird, welche Klasse denn nun fehlt oder übersehe ich da was? Was meinst du mit korrektem Classpath? Denn das Servlet liegt an der richtigen Stelle, denn ich kann es aufrufen und es startet auch, wenn ich es aber veranlasse die fremde Methode aufzurufen, erscheint die obige Fehlermeldung. Die .class der fremden Klasse liegt aber im gleichen Verzeichnis. Was ich mir als Fehlerquelle vorstellen könnte, ist das ich im Servlet die fremde Klasse nicht importiert habe, da sie im gleichen Projekt liegt. Wenn ich sie dann aber ausserhalb von Eclipse starten will, könnte es ja sein das die Klasse nicht gefunden wird oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Varrius Geschrieben 17. August 2005 Autor Teilen Geschrieben 17. August 2005 Leider gibt es hier keine edit, deswegen neue Antwort. Habe den Server nochmal neu gestartet und das mit dem Methodenaufruf nochmal probiert, nun kommt folgende etwas umfangreichere als die obige Fehlermeldung: HTTP Status 500 - -------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception javax.servlet.ServletException: Servlet execution threw an exception filters.ExampleFilter.doFilter(ExampleFilter.java:101) root cause 1.) java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45) 2.) java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:179) org.apache.axis.AxisEngine.init(AxisEngine.java:172) 3.) java.lang.NoClassDefFoundError: javax/wsdl/OperationType org.apache.axis.description.OperationDesc.<clinit>(OperationDesc.java:59) ch.wbe.webservices.GeneratorSoapStub._initOperationDesc1(GeneratorSoapStub.java:26) nach der 1.) Fehlermeldung hab ich das dazugehörige .jar Verzeichnis commons-discovery-0.2.jar in den tomcat\common\lib\ und tomcat\server\lib\ kopiert, den Server neu gestartet und das Servlet erneut ausgeführt. Dann kam Fehlermeldung 2.) nun das gleiche mit der saaj.jar gemacht, neu gestartet. Nun erschien Fehlermeldung 3.) nach ausführen des Servlets und ich kopierte wsdl4j-1.5.1.jar. Nachdem nun diese 3 Bibliotheken in den Ordnern sind, funktioniert alles Vielen Dank nochmal für die Nachfragen, vielleicht hät ich hier sonst noch ein paar Stunden verzweifelt (vielleicht auch länger ) MFG Varrius Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.