9

我正在尝试在 Android 应用程序中使用第三方 jar 文件。我已经能够很好地使用 jar 文件中的一些类。但是,其中一个类引用了 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.

dalvik 似乎不支持与自省和反射相关的 Java 类。我想了解两件事。这是在不久的将来在 dalvik 中支持这一点的计划吗?其次,有没有人建议解决这个问题?

4

2 回答 2

9

dalvik 似乎不支持与自省和反射相关的 Java 类。

不是一揽子,AFAIK。Android 核心团队的目标之一是保持固件小,以降低设备成本。这样做的一个副作用是只包括他们认为必不可少的java.*类。javax.*最初,Android 中都不java.beans.*存在;现在,一些类和接口可用,但不是整个包。

这是在不久的将来在 dalvik 中支持这一点的计划吗?

你会知道我们其他人什么时候知道,也就是说,只有当它出现在版本中时。

其次,有没有人建议解决这个问题?

如果第三方 JAR 是开源项目:

  1. 从 Apache Harmony中获取必要的java.beans类并将它们放入您的项目中
  2. 将它们重构到一个单独的包中(例如),因为如果您尝试将类加载到项目bondy.beans中,Android 将不太喜欢它java.beans
  3. 修改第三方 JAR 以使用重构后的类版本

jarjar也有可能对此有所作为——我还没有使用过这个工具,也不知道它的功能范围。

于 2011-03-30T15:31:41.420 回答
1

Apache Harmony 已经退役很久了。我正在使用openbeans。它为我解决了所有问题。

于 2013-06-26T11:52:15.157 回答