# servlet.jar einbinden



## puck (17. Aug 2005)

Hallo, zusammen.
Aus der Problematik meines letzten Threads bin ich schon mal raus. Ich habe unter Eclipse einfach mal ein neues Servlet-Projekt erstellt, worauf ein ( wie auch KAUM anders zu vermuten war ) Verzeichnis mit diesem Namen und der typischen Servlet-Struktur erstellt wurde. 
Nun möchte ich halt eine Servlet erstellen, welches von aussen aufgerufen werden kann. Wenn ich unter Eclipse jetzt eine neue Klasse anlegen möchte, wird mir aber immer nur "java.lang.Object" als Superklasse/Bibliothek angeboten.
Damit kann ich aber natürlich keine Servlets erstellen, sondern nur mit "javax.servlet.*".

Im Menü Window/Preferences/Tomcat/JVM Einstellung kann man den Classpath erweitern. Hier habe ich servlet-2.3.jar eingebunden. Das hat aber nicht geholfen.

Was ist noch zu tun?

Gruss Christian


----------



## byte (17. Aug 2005)

ihr immer mit eurem classpath ...

einfach unter eclipse:

project -> properties -> java build path -> libraries -> add external jars ...


----------



## puck (17. Aug 2005)

byto hat gesagt.:
			
		

> ihr immer mit eurem classpath ...
> 
> einfach unter eclipse:
> 
> project -> properties -> java build path -> libraries -> add external jars ...



Jaja, da habe ich das auch eingebunden. Aber trotzdem bietet er/es (Eclipse) mir als Superklasse NUR java.lang.Object an!  ???:L


----------



## byte (17. Aug 2005)

also erstens kannst du das auch easy per hand reintippen. ein ... extends Superclass is wohl nich zu viel arbeit:


```
class MyServlet extends HttpServlet { ... }
```

zweitens gibts da einen knopf "browse" mit dem du jede superklasse wählen kannst, die dir beliebt.


----------



## puck (17. Aug 2005)

Noch etwas anderes "disst" mich. 
Ich habe jetzt die zu "includeierenden" jar-Files manuell eingetragen. Das ganze sieht jetzt so aus:

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


public class HelloServlet extends javax.servlet.http.HttpServlet
{
	  public void doGet( HttpServletRequest requ, HttpServletResponse resp )
	  throws ServletException, IOException
	  {
	    resp.setContentType( "text/html" );
	    PrintWriter out = resp.getWriter();
	    out.println( "<html>" );
	    out.println( "Hallo, mein erstes Servlet meldet sich." );
	    out.println( "</html>" );
	    out.close();
	  }
}
```

Eclispe sollte doch wissen, dass es sich um ein Servlet handelt, dass es keine Main braucht usw.
Aber ich bekomme diese Meldung in der Ausgabe:



> java.lang.NoClassDefFoundError: org/apache/catalina/startup/Bootstrap
> Exception in thread "main"



Und das verstehe ich nicht!!! 
Im übrigen finde ich wirklich dass die Classpath-Geschichte das nervigste an Java ist. Dauernd stolpere ich darüber!

Gibt es eigentlich irgend ein Forum eine Newsgroup oder Ähnliches, wo man solche Probleme mit Eclipse und Servlets besprechen kann? Ich komme mir hier etwas deplaziert vor! 
Es gibt ein Eclipse-Forum: www.eclipseproject.de/
aber da tut sich leider nicht so viel!

Gruss Christian


----------



## puck (17. Aug 2005)

byto hat gesagt.:
			
		

> also erstens kannst du das auch easy per hand reintippen. ein ... extends Superclass is wohl nich zu viel arbeit:
> 
> 
> ```
> ...



Wo soll dieser Browse-Knopf sein?


----------



## byte (17. Aug 2005)

wenn du ne neue klasse anlegst gibts ein feld wo du ne superklasse angeben kannst. dort steht standardmäßig object drin und daneben ist ein knopf browse. dachte das war deine frage vorhin?

wegen der fehlermeldung: du kannst servlets nicht einfach mit eclipse ausführen. du musst es deployen in deinem servlet container, sprich ins entsprechende tomcat verzeichnis kopieren (webapps wenn ich mich richtig erinnere). dann kannst du es mit dem browser öffnen über http://localhost:8080/servletname ...

es gibt auch entsprechende plugins für eclipse, die dir das arbeiten mit servlets und co. erleichtern. guck dich z.b. mal nach jboss um und stell alle weiteren fragen in zusammenhang mit servlets am besten in diesem unterforum, da wird dir eher geholfen:

http://www.java-forum.org/de/viewforum.php?f=26



nochwas:

wenn du schon folgendes importierst:


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

dann brauchst du nur noch das hier schreiben:


```
public class HelloServlet extends HttpServlet  {...}
```


----------



## puck (17. Aug 2005)

Ich habe doch das entsprechende Plugin von Sysdeo installiert. Dies soll, laut Beschreibung mir die Arbeit mit dem Deploy usw. abnehmen!?!


----------



## byte (17. Aug 2005)

kenne das plugin nich und du hast auch nicht danach gefragt.


----------



## puck (17. Aug 2005)

Ja sorry. Ich dachte ich hätte es erwähnt.


----------



## puck (18. Aug 2005)

Alsoo, bei mir ist immer noch das Problem daß sich mein Servlet nicht kompilieren lässt. 
Ich habe den Eindruck, daß Eclipse meinen Quellcode gegen die normalen Java.io Bibliotheken versucht zu kompiliren. 
Ich kann zwar ein Tomcat-Projekt anlegen, und es wird dann im Package Explorer die typische Struktur eines WAR-Packages angelegt. 
Wenn ich jedoch eine neue Klasse hinzufügen möchte, bekomme ich immer "java.lang.Object" als Superklasse vorgegeben. Ich habe die servlet.jar zu den "External Jar's" hinzugefügt aber ich bekomme immer folgende Fehlermeldung: 

```
java.lang.NoClassDefFoundError: org/apache/catalina/startup/Bootstrap
Exception in thread "main"
```

Was mich vermuten lässt, dass er eine normale Java-Aplikation erwartet!?!

Wenn ich mich irre, sagts mir...

Gruss Christian


----------

