# Serlvet wird nicht gefunden (404) Apache Tomcat 6.0



## Moonie (17. Mai 2008)

Hallo zusammen,

ich hoffe ihr könnt mir weiter helfen. Ich bin ziemlich frustriert

Habe nämlich den Apache Tomcat Web Server 6.0 installiert.
Habe mir auch ein kleines HelloWorld Servlet geschrieben.

Nach Anleitung habe ich die *.class Datei in folgendes Verzeichnis kopiert:
./tomcat 6.0/webapps/ROOT/WEB-INF/classes/

Wenn ich den Server starte und localhost:8080 aufrufe erscheint auch die Startseite.

Aber wenn ich localhost:8080/servlet/HelloWorld oder auch
localhost:8080/HelloWorld
eingebe, bekomme ich immer 'HTTP Status 404 - /servlet/HelloWorld' bzw.
HTTP Status 404 - /HelloWorld.

OS habe ich Win XP und die ganzen conf files habe ich nicht geändert.

Ich bin verzweifelt und hoffe, dass ihr mir da weiterhelfen könnt.

Vielen Dank!

Viele Grüsse
Moonie


----------



## dajos7 (18. Mai 2008)

Hallo,

Du musst das ganze auch in der web.xml (liegt direkt im WEB-INF Ordner) bekannt machen, dass der tomcat weis wo er das Servlet findet.

zB


```
<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   <display-name>testServer</display-name>


...

   
   <servlet>
      <servlet-name>MyServlet</servlet-name>
      <servlet-class>de.MyServlet</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>MyServlet</servlet-name>
      <url-pattern>/HelloWorld</url-pattern>
   </servlet-mapping>

...
   
  
   </web-app>
```

Bist Du Beginner?

Wenn ja:
Du kannst Eclipse verwenden, um Dynamische WebApplikationen zu erstellen, dort gibt es komplette Wizards, um in 3-4 Schritten ein Grundgerüst für eine WebApplikation herzuleiten. Ebenso lässt sich dort Tomcat einbinden und von dort aus kontrolliert ausführen. zB 
lomboz ist eine modifizierte eclipse version mit Tools zur Web Entwicklung. Dort kann man auch schön zT die Zusammenhänge sehen und die einzelnen stellen schön modifizieren.

Nochn Tipp, wenn Du da in Zukuft mehr machst mit Web Applikationen und den tomcat beibehälst, solltest Du frühstmöglich auf Linux umsteigen. Da gibt es zT recht arge Unterschiede, da Tomcat eigentlich auf den Produktivservern zu 99% unter Linux fährt. Das fängt ganz banal schon beim setzen von Verzeichnispfaden an.


----------



## Moonie (22. Mai 2008)

Hi,

erstmal danke für deine Antwort 

Also zur ersten Frage. Ja ich bin in Sachen Webapplikationen totaler Beginner. Mit Java habe ich schon Erfahrung.
Aber das Webzeugs brauche ich jetzt für mein Studium.

Ich bekomme das einfach nicht hin (

Hab mal in der web.xml folgendes eingetragen


```
<servlet>
       <servlet-name>HelloWorld</servlet-name>
       <servlet-class>HelloWorld</servlet-class>
  </servlet>
   
  <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/servlets/servlet/HelloWorld</url-pattern>
   </servlet-mapping>
```

Weiss zwar jetzt nicht, ob das so richtig ist, da ja eigentlich meine *.Class in ./tomcat 6.0/webapps/ROOT/WEB-INF/classes/ liegt.

Aufjedenfall hat es denn Anschein, als würde er das finden.

Wenn ich jetzt http://localhost:8080/servlets/servlet/HelloWorld eingebe, kommt folgende Fehlermeldungen.



> pe Exception report
> 
> message
> 
> ...



Kommt das jetzt vom Server oder ist das ein Fehler in meiner HelloWorld Class ?

Ich habe keine Ahnung 

Und das Lamboz habe ich auch mal installiert und wollte es testen. Wenn ich da in meinem Servlet auf 'run on Server' gehe 
wähle Apache ODE + Tomcat v5.5, da das der einzige ist der zur Verfügung steht und bei Installation directory wähle ich das Verzeichnis vom Tomcat 6.0 aus, dann kommt folgender Fehler:



> The name of the Tomcat installation directory indicates it is for different version of Tomcat.



Was tun ?

Danke!

Viele Grüsse
Moonie


----------



## HLX (23. Mai 2008)

Moonie hat gesagt.:
			
		

> Kommt das jetzt vom Server oder ist das ein Fehler in meiner HelloWorld Class ?


Deine HelloWorld-Klasse muss das Interface javax.servlet.Servlet implementieren, damit der Servlet Container (Tomcat) damit umgehen kann.

Leite dazu dein HelloWorld einfach von javax.servlet.http.HttpServlet ab.


----------



## dajos7 (23. Mai 2008)

Tomcat 6.0 Container sind erst in späteren versionen der Webtools implementiert. Lomboz hat dies erst ab version 3.3

Moonie wenn du da mehr hilfe brauchst ICQ mich mal an 360 969 395


----------



## maki (23. Mai 2008)

[uote]Nach Anleitung habe ich die *.class Datei in folgendes Verzeichnis kopiert:
./tomcat 6.0/webapps/ROOT/WEB-INF/classes/ [/quote]
Was ist denn das bitte für eine Anleitung???

Hört sich nach Schrott an...


----------



## Guest (23. Mai 2008)

Also der Code von meinem Applet schaut so aus:


```
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class HelloWorld extends HttpServlet
{
	public void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException,
			IOException
	{
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		String title = "Hello World";
		String docType = "<!DOCTYPE HTML PUBLIC \" -//W3C//DTD HTML 4.0" +
		"Transitional//EN\">\n";
		out.println(docType +
		"<HTML>\n" +
		"<HEAD><TITLE>" + title + "</TITLE></HEAD>\n"+
		"<BODY BGCOLOR=\"#FDF5E6\" >\n" +
		"<H1>Hello</H1>\n"+ "</BODY></HTML>");
	}
}
```


Das sollte doch so funktionieren oder? Ist zumindest von HttpServlet abgeleitet

@maki

Also die Anleitung stammt von meinem Prof. Kann auch sein, dass ich die noch nicht so richtig verstanden habe, oder die bezieht sich auf eine andere Version.




> Webanwendung einrichten
> =================
> 
> Die meisten Server sind mit einer Standardwebanwendung ausgestattet und man kann seine
> ...


----------



## maki (24. Mai 2008)

Das ist definitiv Schrott.

Wer soll daraus irgendetwas lernen?

Du hast übrigens kein Applet, sondern ein Servlet 

Solltest deinem Servlet unbedingt ein package spendieren.

Läuft es denn?


----------

