# Servlet Problem über Server



## derguevara (14. Mai 2007)

Hallo, 

habe zwei Java-Datei aus einem Server geholt und diese Geändert. Beim Kompilieren der Datien über der Konsole (nachdem ich mich beim Server angemeldet habe) kriege ich eine Fehlermeldung: 


```
package javax.servlet does not exist
import javax.servlet.ServletRequest;
```

hatte das Problem auch über Eclipse bekommen. Habe mir dann den servlet.jar runtergeladen. Auf dem Rechner hat Eclips mir die Fehlermeldung nicht mehr angezeigt. 

Die Datei (servlet.jar) befinden sich auf dem Desktop. Aber wie soll ich es dem Sever übergeben, wenn ich die Java-Datei hochlade und die Datei sich noch immer auf dem Desktop befindet?? Woher soll er wissen, wo sich das servler.jar befindet?

Bitte um hilfe


----------



## derguevara (14. Mai 2007)

noch ne zusatzinfo:

habe in meinem JavaPfad nachgeguckt und da ist auch unter /usr/java/lib mein servlet.jar drin. 
die java version ist : 1.4.2_12
der finden aber nach wie vor den ServletRequest.class nicht


----------



## kleiner_held (14. Mai 2007)

vielleicht ist das Zeug aus /usr/java/lib nicht im classpath?

```
javac -cp .:/usr/java/lib/servlet.jar MeinServlet.java
```


----------



## derguevara (14. Mai 2007)

muss ich diesen Befehl in meinem /usr/java/lip Verzeichnis oder wo mein "MeinServlet.java" Datei ist ausführen?
oder ist es egal?

vielen dank für deine Hilfe und info


----------



## kleiner_held (14. Mai 2007)

Dort wo deine MeinServlet.java Datei liegt.


----------



## derguevara (14. Mai 2007)

vielleicht noch ein kurzer tipp und ich wäre das problem los.

bei mir erkennt er das -cp nicht. 

Hier mal, was ich als Fehlermeldung bekomme 


```
javac: invalid flag: -cp
Usage: javac <options> <source files>
where possible options include:
  -g                        Generate all debugging info
  -g:none                   Generate no debugging info
  -g:{lines,vars,source}    Generate only some debugging info
  -nowarn                   Generate no warnings
  -verbose                  Output messages about what the compiler is doing
  -deprecation              Output source locations where deprecated APIs are used
  -classpath <path>         Specify where to find user class files
  -sourcepath <path>        Specify where to find input source files
  -bootclasspath <path>     Override location of bootstrap class files
  -extdirs <dirs>           Override location of installed extensions
  -d <directory>            Specify where to place generated class files
  -encoding <encoding>      Specify character encoding used by source files
  -source <release>         Provide source compatibility with specified release
  -target <release>         Generate class files for specific VM version
  -help                     Print a synopsis of standard options
```

ich würd mal raten, das ich anstelle -cp -classpath benutzen muss. Aber wirklich weiss ich es auch nicht 
was meinst du?


----------



## kleiner_held (14. Mai 2007)

Nimm -classpath an Stelle von -cp


----------



## derguevara (14. Mai 2007)

ok, diesmal kommt nicht die fehlermeldung mit dem javac, aber dafür noch immer das mit dem ServletRequest.
aber trotzdem vielen dank für deine Hilfe und Mühe


----------



## kleiner_held (14. Mai 2007)

Seltsam. Du kannst dir mit 
	
	
	
	





```
jar -tf /usr/java/lib/servlet.jar
```
 den Inhalt der servlet.jar auf dem Server anzeigen lassen. Da muesste meiner Meinung nach ein javax/servlet/ServletRequest.class dabei sein.


----------



## derguevara (16. Mai 2007)

da ist in der Tat ein ServletRequest.class drin. 

hat es vielleicht etwas mit der verison: 


```
java -version


java version "1.4.2_12"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_12-b03)
Java HotSpot(TM) Client VM (build 1.4.2_12-b03, mixed mode)
```


zu tun, das er den ServletRequest nicht akzeptiert?


----------



## kleiner_held (16. Mai 2007)

Ne die Java version passt schon. Hmm hast du nochmal Aufruf und genaue Fehlerausgabe deines Compileraufrufes?


----------



## derguevara (16. Mai 2007)

bekomme nur diese 2 Fehlermeldungen. Näheres kann ich auch nichts sagen, weil ich nur diese Fehlermeldung auf der Konsole sehe


```
Registration.java:13: package javax.servlet does not exist
import javax.servlet.ServletRequest;
                     ^
Registration.java:177: cannot resolve symbol
symbol  : class ServletRequest
location: class IrgendEinPfad.Registration
    public void processRequest(ServletRequest req) throws NamingException{
```

ich kann nur daraus lesen, das er das Servlet nicht findet


----------



## kleiner_held (16. Mai 2007)

Die Fehlermeldung interpretiere ich auch so.

und der Aufruf war:

```
javac -classpath .:/usr/java/lib/servlet.jar Registration.java
```

hmm dann weiss ich auch nicht mehr weiter


----------



## derguevara (16. Mai 2007)

ja, bei dem Aufruf hat er dann keine Probleme mehr gemacht. 

war also soweit alles in Ordnung

danke aber für deine Hilfe


----------



## KSG9|sebastian (16. Mai 2007)

Und du bist dir ganz sicher dass die servlet.jar auch in dem angegebenen Ordner liegt? (javac -classpath /usr/java/lib/servlet.jar ?

Seh ich das richtig dass da ein ":" drinsteht? da sollte ein ";" stehen, also

javac -classpath .;/usr/java/lib/servlet.jar Registration.java


----------



## Guest (16. Mai 2007)

ja bin mir sehr sicher, das es in dem Order liegt.. also ich sehe es zumindest 

aber das mit dem ":" war schon richtig. 
mit ";" bekomme ich die Fehlermeldung wie mit dem "javac -cp"


----------



## kleiner_held (16. Mai 2007)

Auf Unix/Linux Maschinen (darauf deutet das /user/java/lib hin) ist der : schon richtig.


----------



## derguevara (16. Mai 2007)

mal ne andere Frage: 

Wie kann ich den überprüfen (richtig es ist UNIX) das zu dem classpath das Verzeichnis /usr/java/lip/servlet.jar übergeben wurde?

mit echo $CLASSPATH bekomme ich alles andere außer /usr/java/lip/servlet.jar


----------



## kleiner_held (16. Mai 2007)

Alles was bei dem Parameter -classpath angegben wurde, wird erst beim start des compilers dem Classpath hinzugefuegt.

Du kannst aber mal testweise folgendes probieren:

```
export CLASSPATH=$CLASSPATH:/usr/java/lib/servlet.jar
echo "CLASSPATH: $CLASSPATH"
javac Registration.java
```


----------



## derguevara (16. Mai 2007)

ok, ich werde langsam verrückt. 

kriege andauert ein "Varaiblen syntax" als Fehlermeldung. 

weder mit export, set, setenv klappt diese Zuweisung. 

Habe noch vor einer Woche ein export gemacht: 
wie z.b. export EDITOR=vi

hat wunderbar geklappt.


----------



## derguevara (16. Mai 2007)

hab folgendes gemacht

set CLASSPATH=:/usr/java/lilp/servlet.jar

jetzt bekomme ich mit 
echo $CLASSPATH nur noch  -> /usr/java/lip/servlet.jar

das sollte nicht so sein. weist du wie ich das rückgängig machen kann??


----------



## kleiner_held (16. Mai 2007)

Shell restarten? (ausloggen/neu einloggen)

was ist das ueberhaupt fuer ein System? Was sagen:

```
cat /etc/*-release
uname -a
```


----------



## derguevara (16. Mai 2007)

shell schließen/neustarten hat wirklich ein wunder verbracht 
also die classpath ist wieder wie vorher  zum glück

ich arbeite unter eine Solaris Machine:

SunOS  5.9 Generic_118558-38 sun4u sparc SUNW,Sun-Fire-480R


----------



## kleiner_held (16. Mai 2007)

export geht auch wieder?
eventuell mal aufsplitten in

```
CLASSPATH=$CLASSPATH:/usr/java/lib/servlet.jar
export CLASSPATH
```


----------



## derguevara (16. Mai 2007)

ich muss zugeben, das ich gerade frustiert bin, warum das mit dem export, set oder setenv nicht klappt. 
hat doch noch alles letzten so gut geklappt. 

Hab für ein Backupscript einige Pfade mit dem Befehel "export" exportiert. Hat alles gklappt

Ich bemühe mich das hinzukriegen. 
Sag bescheid, wenn es klappt


----------



## derguevara (21. Mai 2007)

habe das problem noch immer nicht lösen können. 

habe mich jetzt entschlossen, die ganze Orderstruktur der Java-Klassen auf mein Rechner zu kopieren und es mal lokal kompilieren. 
Da ich so etwas zum ersten mal mache, hätte ich 2-3 Fragen:

1) Die Java-Klassen sind abhängig von einigen Imports die auf den Server bezogen sind. Über Eclipse bekomme ich bei einigen Imports Fehlermeldungen, da er diese nicht findet. Kann ich Eclipse sagen, das er sich zu dem Server verbinden soll?

2) Wenn ich es schaffe, die Dateien lokal kompilieren zu können, kann ich diese dann wieder auf den Sever packen mit der Hoffnung, das es klappen sollte? Oder muss ich die Daten dann noch mal über die Konsole kompilieren?

3) Es geht ja ausschlißlich um die Klasse ServletRequest.class welches ich über den Server zu den Java-Klassen nicht einbinden kann. Über Eclipse bekomme ich diese Fehlermeldung dann weg. Aber wenn ich die Klassen wieder auf den Sever packe, dann wird er denn "servlet.jar" von C:\Programme\Java\lib\ erwarten, welches er dann natürlich auch nicht findet wird.

vielleicht noch einige Tipps auf dem Weg zur Lösung?

vielen danke


----------



## derguevara (21. Mai 2007)

zu info:

Hab jetzt meinem CLASSPATH den Pfad /usr/java/lib/servlet.jar übergeben können. und zwar mit: 

```
set CLASSPATH=${CLASSPATH}/usr/java/lib/servlet.jar
```

obwohl jetzt in meinem CLASSPATH das gewünschte steht, kriege ich nachwie vor die gleiche Fhelrmeldung, das javax.servlet nicht gefunden wird


----------

