2

Android Dx でコア クラスを使用すると問題が発生する "javax/xml/bind/Binder.class" の処理に問題があります Web サービスを開発するには javax.xml.* のクラスが必要ですが、Android では完全にはサポートされていません。これらの jar をインポートすると、Eclipse にコンパイル エラーは表示されませんが、DX はそれを処理できません。インターネットで検索したところ、 --core- ライブラリを使用するか、jarjar を使用して再パッケージ化できるとのことです。Eclipse に DX オプションを追加するためのチュートリアルは見つかりませんでした。それを解決するのを手伝ってくれてありがとう。

4

2 に答える 2

1

Dx から得られるエラーは、インポートするライブラリの Java パッケージ名のみに基づいており、それ以外には何も基づいていません。

メッセージは次のように要約できます:ライブラリを java.* または javax.* 名前空間にインポートする場合、JDK の一部としてのみ提供される他の「コア」ライブラリに依存する可能性が非常に高いため、 Android プラットフォームで利用できます。それは基本的に、あなたが何か愚かなことをするのを防いでいます。それは、そのメッセージが表示されたときの 99% の確率で正確です。

もちろん、Java パッケージが java.* または javax.* で始まるからといって、それが適切な JDK に依存しているとは限りません。それはアンドロイドで完全にうまくいくかもしれません。愚かさチェックを回避するには、 --core-library オプションを dx に追加します。fromの最後の行を変更$ANDROID_HOME/platform-tools/dxし、

exec java $javaOpts -jar "$jarpath" "$@"

に、

exec java $javaOpts -jar "$jarpath" --core-library "$@"

私の場合、JAXB に依存する Jackson に依存するライブラリを含めていました。私にとっては、愚かさチェックをオーバーライドすることは受け入れられました。なぜなら、ライブラリのJacksonの使用はJSONのみであり、XMLシリアライゼーションではなかったからです(私は実装ではなくJAXB APIライブラリのみを含めています)。もちろん、これを行うためのよりクリーンな方法があればいいのですが、Jackson の使用を避けるために最上位のライブラリを書き直すことは選択肢ではありませんでした。

于 2012-06-18T20:44:28.987 に答える
0

これらのクラスは、android dalvik と互換性のない jvm に対してコンパイルされます。jar ではなくソースを取得し、android 用にコンパイルされた jar ファイルにコンパイルする必要があります。

于 2011-05-25T13:42:28.440 に答える