# Servlet deployment mit eclipse



## totix800 (5. Jul 2009)

Hi,

ich hoffe ich bin hier an der richtigen Stelle. Ich versuche mich zur Zeit in Servlets und den Umgang mit Tomcat einzuarbeiten, stoße dabei aber auf Probleme, die mir das nicht so richtig möglich machen. Vorgegangen bin ich bis jetzt wiefolgt.
Ich habe mir Version 6.0.20 vom apache Tomcat heruntergeladen und entpackt. Nach dem Start über das Startup Script lässt sich die Tomcat Welcome-page ohne Probleme erreichen und alles läuft so wie gewollt.
Ich möchte das ganze aber zu Testzwecken aus Eclipse heraus machen. Über File -> New -> Other -> Server habe ich meinen Tomcat als Server registriert. Ich kann ihn nun über eclipse starten, so wie ich mir das vorgestellt habe.
Hier begegne ich jedoch meinem ersten Problem. Wenn ich versuche ihr über meinen Browser wie zuvor über Domain ist reserviert zu erreichen, bekomme ich nun nicht die Tomcat Welcome-Page gelifert sondern eine Fehlermeldung mit dem allseits beliebten 404 Fehlercode und dem Folgenden:


```
HTTP Status 404 - /

type Status report

message /

description The requested resource (/) is not available.
Apache Tomcat/6.0.20
```

Versuche ich nun ein Servlet, was ich in einem "Dynamic Web Project" angelegt habe über die Funkction "Run on server" zu starten, kommt leider auch nicht der gewünschte Output des Servlets (request.println("HelloWorld")) sondern folgender Fehler:

```
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: Wrapper cannot find servlet class TestPackage.HelloServlet or a class it depends on
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	java.lang.Thread.run(libgcj.so.81)

root cause

java.lang.ClassNotFoundException: TestPackage.HelloServlet
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	java.lang.Thread.run(libgcj.so.81)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
Apache Tomcat/6.0.20
```

Versuche ich dann spaßeshalber das Servlet nochmal zu starten, wiederholt sich der Fehler nicht, sondern ich bekomm nochmal folgende:

```
HTTP Status 404 - Servlet HelloServlet is not available

type Status report

message Servlet HelloServlet is not available

description The requested resource (Servlet HelloServlet is not available) is not available.
Apache Tomcat/6.0.20
```

Das letztere leuchtet mir auch ein, da scheinbar nicht deployed wird, wenn ich in meinem WebApps Verzeichnis nachschaue ist dort nemich nichts von meinem kleinen HelloWorld Servlet zu finden.

Ich hab jetzt schon eine ganze Reihe von Tutorials und alles weitere durchgeschaut und überall scheint es wohl garkein Problem zu sein und ich sollte mein Servlet sofort ans Laufen bringen, ich steh also en bischen aufm Schlauch, weswegen ich jetzt hier frage und auf Antwort hoffe.

Danke und Gruß
toti


----------



## maki (5. Jul 2009)

Wie iśieht denn die Struktur deiner WebApp aus?
Wie sieht das ServletMapping in der web.xml aus?


----------



## totix800 (6. Jul 2009)

Hi,

also meine web.xml sieht folgendermaßen aus: 


```
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>HelloWorld</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>HelloServlet</display-name>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>TestPackage.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/HelloServlet</url-pattern>
  </servlet-mapping>
</web-app>
```


----------



## maki (6. Jul 2009)

Zeig mal den Code zu deinem Servlet.


----------



## Atze (6. Jul 2009)

sollte das servlet nicht unter http://localhost:8080/HelloServlet erreichbar sein?


----------



## mvitz (7. Jul 2009)

Atze hat gesagt.:


> sollte das servlet nicht unter http://localhost:8080/HelloServlet erreichbar sein?



Normalerweise unter

http://localhost:8080/CONTEXT/HelloServlet

meine Vermutung ist, dass der TO sein Servlet in einem package hat und das in der web.xml nicht angeben hat, aber ohne seinen Quellcode vom Servlet ist das nur Spekulation.


----------

