AbstractMethodError auf UriBuilder bei der Aktualisierung Jersey-client-1.x, 2.x
Sind wir dabei, ein upgrade unserer Web-Anwendung (läuft auf Tomcat7) aus Jersey 1,7-Jersey 2.4.1.
Ich habe die server-Seite funktioniert jetzt, aber der JUnit-tests, die mit der jersey-client werfen die AbstractMethodError:
java.lang.AbstractMethodError:
javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
at org.glassfish.jersey.client.JerseyWebTarget.<init>(JerseyWebTarget.java:72)
at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:180)
at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:69)
at ******.test.resources.ResourceConfig.getResourceWithCredentialsAt(ResourceConfig.java:144)
at ******.test.resources.ResourceConfig.getResourceAsUserAt(ResourceConfig.java:99)
at ******.test.resources.UsersResourceTest.testGetAuthorizedUser(UsersResourceTest.java:251)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Das Projekt wird betreut durch maven, hier sind die pom Abhängigkeiten:
<!-- Our webapps are tomcat servlets -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- Jersey Container to allow jersey running inside tomcat servlet -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>
<!-- Jersey core dependencies -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.bundles</groupId>
<artifactId>jaxrs-ri</artifactId>
<version>${jersey.version}</version>
</dependency>
<!-- Media stuff -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
<!-- Jackson JSON handling -->
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-xml-provider</artifactId>
<version>${jackson.version}</version>
</dependency>
Scheinbar ich vermisse eine konkrete Implementierung der Klasse UriBuilder, aber ich habe keine Ahnung, was die Abhängigkeit, die ich brauche, um hinzuzufügen. Auch-es funktioniert für die server-Seite, hö!?
überprüfen Sie dies : stackoverflow.com/questions/12137073/abstract-method-error/...
ich habe das gleiche problem wie du...liefern könnten, Ihre WEB-INF\lib ?
ich habe das gleiche problem wie du...liefern könnten, Ihre WEB-INF\lib ?
InformationsquelleAutor Pepster | 2013-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich festgestellt, dass die behauptet Bibliothek hängt irgendwie auf jersey 1.1.7. Dies führte Teile von meinem code für die Kompilierung in Ordnung, während es war immer noch je nach 1.1.7 APIs.
Fand ich es, indem ich eine finden:
...in der ~/.m2 Ordner auf jersey. Dies kann nur getan werden, wenn Ihre app ist die einzige, die mit maven auf Ihrem Rechner.
mvn clean
aber Sie gab mir ein guter Ausgangspunkt.InformationsquelleAutor Pepster
Wenn Sie diese Fehlermeldung erhalten, bedeutet es, dass UriBuilder geladen wird, aus anderen Bibliotheken wie cxf-2.1.3.jar. Benennen Sie einfach um z-cxf-2.1.3.jar. Es sollte gut funktionieren.In maven finden, die Abhängigkeit ist, bringen Sie das Glas und verwenden Sie so etwas wie dieses
Finden, die alle Bibliotheken enthält cxf-2.1.3.jar und ausschließen, die insbesondere Glas mit maven ausschließen
Danke für den Tipp! Ich sehe jetzt, dass ich auch 1.x-Versionen der jersey jar-Dateien im Maven-Dependencies-Ordner (eclipse). Gemischt mit der 2.4.1 Versionen scheint nicht richtig. Komischerweise habe ich keine 1.x-jersey-dep Verweilen rund um die in den poms.
u dont müssen direkte Abhängigkeit irgendeinem plugin oder transative Abhängigkeit, haben vielleicht diejenigen, die noch u kann Sie ausschließen
InformationsquelleAutor constantlearner