有没有解决Android错误“无法解析虚拟方法java / beans / PropertyDescriptor”?

我试图在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不支持与内省和reflection相关的Java类。 我想找出两件事。 这是否计划在不久的将来在达尔维克支持这一点? 其次,是否有人建议可以解决这个问题?

    似乎dalvik不支持与内省和reflection相关的Java类。

    不是全面的,AFAIK。 核心Android团队的一个目标是保持较小的固件,以降低设备成本。 这样做的一个副作用是只包含来自java.*javax.* ,他们觉得这些类是必不可少的。 最初,Android中没有java.beans.* ; 现在,有一些类和接口可用,但不是整个包。

    这是否计划在不久的将来在达尔维克支持这一点?

    你会知道我们其他人何时知道,也就是说,只有它出现在一个版本中。

    其次,是否有人建议可以解决这个问题?

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

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

    jarjar也有可能对此做些什么 – 我还没有使用过这个工具,也不知道它的function范围。

    Apache和谐已经退役很长一段时间了。 我正在使用openbeans 。 它解决了我的所有问题。