Ich bekomme die folgende Ausnahme, wenn ich versuche, ein WebTarget von einem Jersey-Client zu erstellen.Fehler bei der Verwendung von Jersey-Client in osgi - Kein Generator wurde zur Verfügung gestellt
Mein Code
Client client = ClientBuilder.newClient();
WebTarget baseTarget = client.target("http://127.0.0.1:9000");
Ausnahme-Stack-Trace
java.lang.IllegalStateException: No generator was provided
and there is no default generator registered
at org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.internalCreate(ServiceLocatorFactoryImpl.java:266)
at org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.create(ServiceLocatorFactoryImpl.java:247)
at org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:138)
at org.glassfish.jersey.internal.inject.Injections.createLocator(Injections.java:109)
at org.glassfish.jersey.internal.RuntimeDelegateImpl.<init>(RuntimeDelegateImpl.java:61)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:374)
at javax.ws.rs.ext.FactoryFinder.newInstance(FactoryFinder.java:118)
at javax.ws.rs.ext.FactoryFinder.find(FactoryFinder.java:225)
at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:135)
at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:120)
at javax.ws.rs.core.UriBuilder.newInstance(UriBuilder.java:95)
at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
at org.glassfish.jersey.client.JerseyWebTarget.<init>(JerseyWebTarget.java:71)
at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:185)
at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:70)
Was das Problem sein könnte?
Ich habe das gleiche Problem und habe alle diese JAR-Dateien in meinem Klassenpfad, aber immer noch die Ausnahme. Ich habe auch bemerkt, dass es die folgende Warnung gibt: WARNUNG: Kann eine Standardimplementierung des HK2 ServiceLocatorGenerator nicht finden –
Ich erfuhr genau das gleiche Problem und es stellte sich heraus, dass es einen Konflikt von Gläsern gab. Um es zu relativieren, meine Laufzeit ist OSGI, wo es gut lief, aber als ich versuchte, den Jersey-Client mit der Java-Klasse via Eclipse auszuführen, würde es die Ausnahme auslösen. Die Lösung, die für mich funktionierte, war, dass ich alle Klassenpfadabhängigkeiten entfernte, die von OSGI verwendet wurden, und ich fügte die Bibliotheken hinzu, die in dieser Antwort erwähnt werden. Außerdem musste ich Jersey Client und Jersey Common Bibliotheken hinzufügen. Ich hoffe das hilft. Ich wünschte, die Trikot-Distribution würde sie nur bündeln, so dass die Entwickler nicht suchen müssen. –
Ich habe hk2-locator- * vergessen.jar, das den obigen Fehler verursacht hat. Wenn hinzugefügt mein Problem gelöst. – Yergalem