2016-07-01 35 views
0

Ich bin Entwickler bei Capgemini und ich habe ein Problem mit einer Java EE-Anwendung, die ich entwickle.java.lang.NoSuchMethodError: org/apache/axiom/OM/OMFactory.createOMElement (Lorg/apache/axiom/om/OMDataSource;) Lorg/apache/axiom/om/OMSourcedElement;

Ich rufe einen Webservice mit Axis2 in einem Junit-Test in einem Projekt und es funktioniert. Aber wenn ich die gleiche Methode in einem anderen Projekt nennen, das bezieht sich den ersten (mit Maven Abhängigkeiten) und ich meine Anwendung zu starten habe ich folgende Fehlermeldung:

java.lang.NoSuchMethodError: org/apache/axiom/om/OMFactory.createOMElement(Lorg/apache/axiom/om/OMDataSource;)Lorg/apache/axiom/om/OMSourcedElement; 

Hat jemand eine Idee von dem, was ich tue, falsch ?

Wenn Sie weitere Informationen benötigen, fragen Sie mich.

Danke

Antwort

1

Der Fehler bedeutet, dass das zweite Projekt mit einer Version der Axiom-Bibliothek ausgeführt wird, die durch das erste Projekt erwartet älter als die Version ist. Es gibt zwei mögliche Gründe:

  • Die Laufzeitumgebung, in der Sie das zweite Projekt seine eigene Version von Axiom einzusetzen hat. Das würde z.B. Dies ist der Fall für eine Java EE-Anwendung, die auf WebSphere bereitgestellt wird.

  • Das zweite Projekt hat eine andere (direkte oder indirekte) Abhängigkeit von der Axiom-Bibliothek mit einer anderen Version als das erste Projekt, und Maven wählt diese Version aus. Das sollten Sie sehen können, wenn Sie im zweiten Projekt mvn dependency:tree ausführen. Wenn dies der Fall ist, fügen Sie dem POM einen Abschnitt dependencyManagement hinzu, um die Verwendung der richtigen Version zu erzwingen.