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

时间:2011-03-30 15:12:10

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

2 个答案:

答案 0 :(得分:9)

  

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

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

  

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

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

  

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

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

  1. 从Apache Harmony中获取必要的java.beans类并将它们放入项目中
  2. 将它们重构为一个单独的包(例如bondy.beans),因为如果您尝试将java.beans类加载到项目中,Android将不会喜欢它
  3. 修改第三方JAR以使用您的重构版本
  4. jarjar可能也可以对此做些什么 - 我还没有使用过这个工具,也不知道它的能力范围。

答案 1 :(得分:1)

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