9

Android アプリケーション内でサードパーティの jar ファイルを使用しようとしています。jar ファイル内のいくつかのクラスを問題なく使用できました。ただし、クラスの 1 つは、dalvik vm でサポートされていないように見えるいくつかの Java クラスを参照しています。LogCat で表示されるエラーの一部を次に示します。

Unable to find class referenced in signature java/beans/PropertyDescriptor.
Unable to resolve virtual method java/beans/PropertyDescriptor.getName().
Unable to resolve virtual method java/beans/PropertyDescriptor.getReadMethod().
Unable to resolve static method java/beans/Introspector.getBeanInfo().
Unable to resolve exception class java/beans/IntrospectionException.

イントロスペクションとリフレクションに関連する Java クラスは、dalvik ではサポートされていないようです。2つのことを知りたいです。近い将来、dalvik でこれをサポートする計画はありますか? 次に、この問題を回避するための回避策を提案する人はいますか?

4

2 に答える 2

9

イントロスペクションとリフレクションに関連するJavaクラスはdalvikではサポートされていないようです。

包括的ではありません、AFAIK。コアAndroidチームの目的の1つは、ファームウェアを小さく保ち、デバイスのコストを削減することです。これの副作用の1つは、からのクラスのみが含まれjava.*javax.*それらが不可欠であると感じることです。もともと、java.beans.*Androidには存在しませんでした。現在、いくつかのクラスとインターフェースが利用可能ですが、パッケージ全体ではありません。

それは近い将来、dalvikでこれをサポートする計画ですか?

それがリリースに現れる場合にのみ、私たちの残りの人がいつ知っているか、つまり、あなたはそれを知るでしょう。

第二に、誰かがこの問題を回避する回避策の提案がありますか?

サードパーティのJARがオープンソースプロジェクトの場合:

  1. java.beansApache Harmonyから必要なクラスを取得し、プロジェクトに配置します
  2. プロジェクトにクラスをbondy.beansロードしようとするとAndroidはあまり気に入らないため、それらを別のパッケージ(たとえば)にリファクタリングします。java.beans
  3. クラスのリファクタリングされたエディションを使用するようにサードパーティのJARを変更します

jarjarがこれについても何かできる可能性があります-私はまだツールを使用しておらず、その機能の範囲を知りません。

于 2011-03-30T15:31:41.420 に答える
1

Apache ハーモニーは長い間廃止されました。openbeansを使用しています。そして、それは私にとってすべての問題を解決します。

于 2013-06-26T11:52:15.157 に答える