2009-07-17 4 views
2

Ich habe einen Axis (1.4) -Webdienst (läuft auf Tomcat 6.0.20), der gut funktioniert, bis ich versuche, irgendeine Klasse aus einem anderen Projekt zu verwenden.Java Axis-Webdienst-Projektabhängigkeit nicht gefunden

Ich habe mein Web-Service-Projekt und ein anderes Projekt mit Geschäftslogik. Ich habe das Business-Logik-Projekt als Projektabhängigkeit/Referenz in meinem Web-Service-Projekt hinzugefügt.

package MyProject.services; 
import BusinessLogic.Core.TestClass; 

    public class MyServiceImpl implements MyProject.services.MyServiceImpl_PortType { 

    public java.lang.String getServerStatus() throws java.rmi.RemoteException { 
      //BusinessLogic.Core.TestClass core = new BusinessLogic.Core.TestClass(); 
      return "This is working fine!"; 
    } 
} 

Wenn ich die obige Methode aufrufen, funktioniert alles gut. Wenn ich jedoch die Zeile in getServerStatus() auskommentiere, bekomme ich eine NoClassDefFoundException.

Der Code ist natürlich Kompilierung gut und soweit ich sehen kann habe ich alle Abhängigkeiten hinzugefügt. Die TestClass hat nur einen Konstruktor, der "Hello" ausgibt und keine anderen Abhängigkeiten hat.

Ich bin relativ neu in Java Web Services, so ist es wahrscheinlich nur ein dummer Fehler, den ich gemacht habe. Hast du eine Idee?

Antwort

2

Sie sagen, Sie sie in verschiedenen haben Projekte. Wenn dies WAR-Dateien/Ordner in Tomcat bedeutet, könnte Ihr Problem sein, dass eine Webanwendung keine andere Webanwendung direkt sehen kann (einschließlich Klassenpfad).

Wenn nicht, dann bearbeiten Sie Ihre Frage, um genau zu sein, was Sie sehen und was Sie erwarten.

+0

Ich meine verschiedene Projekte in Eclipse. Ich füge nur eine Projektreferenz hinzu, importiere den Namensraum und benutze die Klasse. Diese Klasse wird nicht gefunden, wenn ich den Dienst aufruft. – Ezombort

+1

Sie kennen die Einstellungen -> Java EE Module Dependencies, die steuern, welche Komponenten in der WAR-Datei bereitgestellt werden? Auch 7zip erlaubt einfaches Glas/Krieg/was auch immer Introspektion. Ich glaube, dass die Klasse nicht eingesetzt wird. –

+0

Nein, das war mir nicht bewusst, ich habe das Projekt einfach zu den Einstellungen -> Java Build Path Einstellungen hinzugefügt. Danke vielmals! – Ezombort

1

Sie haben nicht gesagt, wie Sie das erstellen und bereitstellen. Ist TestClass irgendwo in einer JAR-Datei? Wenn ja, wo befindet sich die JAR-Datei im bereitgestellten System und wie werden Ihre Web-Service-Klassen implementiert? Diese

+0

Ich teste nur lokal, läuft Tomcat von Eclipse. TestClass befindet sich nur in einem anderen Projekt im Arbeitsbereich und ich habe einen Verweis auf das BusinessLogic-Projekt in Eclipse (Jave Buil Path/Projects) hinzugefügt. Der Dienst selbst funktioniert einwandfrei, und ich kann von meinem .NET-Projekt aus darauf zugreifen/aufrufen, solange ich die TestClass nicht in meiner Service-Implementierung verwende. – Ezombort

+0

Sie müssen genau sehen, wie Tomcat ausgeführt wird und wo TestClass endet. Persönlich habe ich es immer vorgezogen, Tomcat aus einer bereitgestellten Perspektive zu debuggen - d. H., Was auch immer Sie für die Produktion verpacken würden, und dann einen Debugger dagegen laufen zu lassen. Es bedeutet, dass diese Probleme ein Problem darstellen, wenn sie nur ein Problem in der Produktion darstellen. –

+0

OK, ich werde versuchen, den Dienst auf meinem Server bereitzustellen. Welche Werkzeuge bevorzugen Sie zum Debuggen? – Ezombort

1

ist keine Antwort auf Ihre Frage, aber Sie können diese kostenlos nutzen soapui

am Wsdl zu suchen, die erzeugt wird, und rufen Methoden auf den Dienst. Dies bedeutet, dass Sie Ihren Dienst ohne Kompilieren und Bereitstellen der Stubs zu einem zweiten Test-Client testen (die Sie zu einem späteren Zeitpunkt zu tun haben)

this helps

+0

Schön, danke. Ich werde es versuchen. – Ezombort