# Problem mit fehlenden Packages (Web Service)



## XesperantoX (5. November 2006)

Hallo,
habe ein Problem beim compilieren einer AXIS-Anwendung, habe das Ganze in Eclipse entwickelt und dort hab ich auch keine Fehler, wenn ich aber auf der Konsole compilieren will dann bekomme ich folgende Meldung:

```
C:\JavaProg\WS_Aufgabe1\TiendaCl>javac *.java
TiendaCliente.java:8: package javax.xml.rpc does not exist
import javax.xml.rpc.ParameterMode;
                     ^
TiendaCliente.java:9: package javax.xml.rpc does not exist
import javax.xml.rpc.ServiceException;
                     ^
TiendaCliente.java:27: cannot access javax.xml.rpc.Call
file javax\xml\rpc\Call.class not found
                        Call call = (Call) service.createCall( );
                                    ^
```
Ich bin mir nun nicht sicher ob es an meiner Konfiguration liegt,
- J2SE 1.5 (Brauch ich hier schon die EE?)
- Tomcat 5.5.20
- AXIS 1.4

oder an falsch gesetzten CLASSPATH-Variablen. Wobei ich diese eigentlich schon angeschaut habe... Kann mir jemand evtl. sagen wo ich mit meiner Fehlersuche weiter machen soll? 
Das Programm ist eine einfache JWS-Anwendung, der Client wird über die Konsole aufgerufen und der Web Service liefert ihm was zurück.

Danke für Ratschläge
Sascha


----------



## Thomas Darimont (5. November 2006)

Hallo!

Du musst natürlich die AXIS Bibliotheken aus dem Lib-Verzeichnis der Axis Distribution im Classpath liegen haben wenn du Axis Anwendungen (von Hand) kompilieren willst.
In deinem Fall fehlt das jaxrpc.jar in deinem Classpath.

Gruß Tom


----------



## XesperantoX (5. November 2006)

Danke für die Antwort! Aber irgendwie scheint es da nicht dran zu liegen, oder ich mach was falsch, im CLASSPATH liegen alle Libaries drin (siehe unten). Hab in Eclipse eine Bibliothek mit den AXIS Libaries angelegt und dort funktioniert auch alles (compilieren & ausführen) aber über die Konsole nicht. Könnte es noch woanders dran liegen oder habe ich im CLASSPATH was falsch gemacht? 

CLASSPATH = C:\Programme\Java\jdk1.5.0\bin;C:\Programme\Java\jdk1.5.0\lib;%AXIS_LIB%\axis.jar;. %AXIS_LIB%\axis-ant.jar;. %AXIS_LIB%\commons-discovery.jar;. %AXIS_LIB%\log4j-1.2.8.jar;. %AXIS_LIB%\saaj.jar;. %AXIS_LIB%\jaxrpc.jar;. %AXIS_LIB%\commons-logging.jar;. %AXIS_LIB%\tt-bytecode.jar;. %AXIS_LIB%\wsdl4j.jar;. %CATALINA_HOME%\common\lib\xerces.jar;.

(Weiß nicht was die Punkte hinter den ";" bedeuten, vorher war es ohne Punkte und jetzt mit, ändert aber nix)

Grüße
Sascha


----------



## Thomas Darimont (5. November 2006)

Hallo!

Also den Classpath sollte man nicht über eine Globale-Umgebungsvariable setzen, da man dadurch unter Umständen andere Java Anwendungen stören könnte... 
Versuch doch mal dem javac mit -cp den Classpath direkt anzugeben.

Gruß Tom


----------



## webmanie (22. März 2007)

hi,
was auch nicht schlecht ist für solch einen Anwendungsfall das ganze in eine Batch Aufruf zu packen oder in ein Antskript(Apache Ant: http://ant.apache.org/manual/) zu packen und laufen zu lassen. mit folgendem xml ant zeilen 

1.) Verzeichnis mit den Axis Jars setzen
<property name="lib" value="lib"/>
<path id="id.classpath">
<fileset dir="${lib}">
<include name="**/*.jar"/>
</fileset>
</path>

2.)Kompilieren der Java Sourcen
<javac srcdir="${src}" destdir="${target}">
<classpath refid="id.classpath"/>
</javac>

Hinweis:
du könntest das ant.jar mit $CLASSPATH global bekannt geben, und dann von der console dein Script komfortabel aufrufen mit 
Konsolenaufruf:
ant -f myAntTask.xml

gruss webmanie


----------



## mkoeni1 (2. April 2007)

Hallo zusammen,

Ich habe das gleiche Problem (Hürde) wie der Post-Ersteller. In einer IDE Umgebung ist das recht einfach, da includiere ich einfach die jars die ich brauche in den Libraries-Ordner und fertig ist die Laube. Doch wenn ich in der Konsole (von Hand) unterwegs bin, muss ich die jars ja auch dem System bekanntmachen um mit ihnen zu arbeiten. Sei es aktuell in meinem Fall ein:

```
import org.apache.axis2.*;
```


@all:
in welcher Tiefe muss so ein CLASSPATH/Classpath (case-sensitiv?) angegeben werden ?

CLASSPATH
c:\axis2\lib

oder 

CLASSPATH
c:\axis2\lib\*.jar


Gruß m


PS: Was ist der Unterschied zwischen PATH und CLASSPATH ?
PS: Ich arbeite mit Tomcat6.0.10 und WinXP
Das lernt man NIE wenn man immer mit einer IDE unterwegs ist ;-)


----------



## Thomas Darimont (2. April 2007)

Hallo,



> @all:
> in welcher Tiefe muss so ein CLASSPATH/Classpath (case-sensitiv?) angegeben werden ?
> 
> CLASSPATH
> ...


Normalerweise gibt man beim Classpath die einzelnen Elemente (Verzeichnisse und Jars direkt) explizit an. D.h.:
CLASSPATH=c:\bubu\lib\foo.jar;c:\bubu\lib\baba.jar;c:\bubu\classes

Da man durch das setzen einer Systemweiten Classpath Variablen andere Java Anwendungen ungewollt beeinflussen kann gibt man in der Regel den Classpath einer Anwendung beim Java Launcher als Option mit an:
java -cp c:\bubu\lib\foo.jar;c:\bubu\lib\baba.jar;c:\bubu\classes de.tutorials.Bubu

Seit Java 6 hat man auch die Möglichkeit mit * mehrere Jars in einem Verzeichnis automatisch in den Classpath zu ziehen:
java -cp c:\bubu\lib\*.jar;c:\bubu\classes de.tutorials.Bubu



> PS: Was ist der Unterschied zwischen PATH und CLASSPATH ?
> PS: Ich arbeite mit Tomcat6.0.10 und WinXP
> Das lernt man NIE wenn man immer mit einer IDE unterwegs ist ;-)


Der PATH ist in der Regel eine Umgebungsvariable des Systemens über die das Betriebssystem verschiedene Programme finden kann. Praktisch der Standard Suchpfad...

Der CLASSPATH ist eine Sammlung von Jars, und Verzeichnissen mit Klassen die von einer Java Anwendung benötigt werden.

Gruß Tom


----------

