24

RESTEasy を JAX-RS 2.0 クライアント実装として使用しようとしています。問題は、実行時例外が発生したことです:

06-28 13:29:06.410: E/AndroidRuntime(5745): Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.glassfish.jersey.client.JerseyClientBuilder
06-28 13:29:06.410: E/AndroidRuntime(5745):     at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:103)

したがって、メソッドは、正しいことを理解しているかどうかをnewBuilder()検索しています。JerseyClientBuilder代わりに RESTEasy を使用するようにシステムに指示するにはどうすればよいですか?

4

1 に答える 1

27

JAX-RS は、サービス プロバイダー規約に依存しています。メソッドの最初の行では、次のnewBuilderように読むことができます。

 Object delegate = FactoryFinder.find(JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY,
   JAXRS_DEFAULT_CLIENT_BUILDER); 

どこJAXRS_DEFAULT_CLIENT_BUILDER_PROPERTYですか"javax.ws.rs.client.ClientBuilder"

逆にFactoryFinder見た目は

  • クラス名の最初にMETA-INF/services/javax.ws.rs.client.ClientBuilder
  • javax.ws.rs.client.ClientBuilder次に、プロパティで${java.home}/lib/jaxrs.properties
  • 最後にシステムプロパティにjavax.ws.rs.client.ClientBuilder

したがって、RESTEasy を使用するには、ファイルを作成する必要があります

META-INF/services/javax.ws.rs.client.ClientBuilder

テキストで:

org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder

これは RESTEasy のクラス名ですClientBuilder

于 2013-07-04T08:14:01.023 に答える