この問題についてよく検索し、3 日以上費やしましたが、どのスレッドも役に立ちませんでした。Jersey oAuth を使用して Web サービスにアクセスしています。
以下はジャージoAuthの私のコードです。
private SSRestServiceClient(String url, String consumerKey, String consumerSecret) {
OAuthParameters params = new OAuthParameters().signatureMethod(HMAC_SHA1.NAME).consumerKey(
consumerKey).version(OAUTH_VERSION);
OAuthSecrets secrets = new OAuthSecrets().consumerSecret(consumerSecret);
Client httpClient = Client.create();
OAuthClientFilter filter = new OAuthClientFilter(httpClient.getProviders(), params, secrets);
httpClient.addFilter(filter);
httpClient.addFilter(new LoggingFilter());
this.webResource = httpClient.resource(url);
}
oAuth の場合、以下の API を使用しています。
- リスト項目
- OAuth クライアント 1.12.jar
- OauthSignature-1.12 jar
- ジャージー クライアント -1.12 jar
- jersey-core-1.12.jar
- jersey-json-1.12.jar
- jsr311.jar
このコードを単純なJavaアプリケーションで実行すると正常に動作しますが、このコードをJavaからAndroidに移行すると、エラーが発生し始めます
[2014-09-27 17:19:05 - Dex Loader] dex を実行できません: 複数の dex ファイルで Ljavax/ws/rs/ApplicationPath が定義されています。[2014-09-27 17:19:05 - Demo-Jersey] Dalvik 形式への変換に失敗しました: dex を実行できません: 複数の dex ファイルで Ljavax/ws/rs/ApplicationPath が定義されています。
私はそれについてグーグルで調べました.いくつかのスレッドは、jsr311からApplicationPathファイルを削除することを提案しています. 私は同じことをしましたが、それでも問題を解決できませんでした。
誰でもこの問題を取り除く方法を知っていますか? このコードが Android ではなく Java で動作するのはなぜですか?
コードで使用できる Android 固有の jsr311 はありますか?
誰かが解決策を持っている場合は親切に助けてください。