首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用使用jars的java.beans类(Introspector、BeanInfo或PropertyDescriptor)

使用使用jars的java.beans类(Introspector、BeanInfo或PropertyDescriptor)
EN

Stack Overflow用户
提问于 2013-02-25 19:07:02
回答 2查看 8.9K关注 0票数 19

我有使用java.beans.Introspectorjava.beans.BeanInfojava.beans.PropertyDescriptor的第三方jar (我不能更改)。

如何在我的安卓应用程序中使用该jar?

它无法从第三方jar加载类(使用Introspector):

WARN/dalvikvm(780): VFY: unable to resolve static method 6325: Ljava/beans/Introspector;.getBeanInfo (Ljava/lang/Class;)Ljava/beans/BeanInfo;
WARN/dalvikvm(780): VFY: unable to resolve exception class 962 (Ljava/beans/IntrospectionException;)
WARN/dalvikvm(780): Verifier rejected class Lorg/thirdpartyjar/SomeClass;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-05 22:38:34

唯一的解决方案是维护噩梦:openbeans从源代码派生所有第三方jars并重写它们,这样它们就不会使用java.bean.*类(可能是通过将它们替换为openbeans)。

然后,每当这些第三方jars中的一个发布热修复程序(例如,针对关键的安全错误)时,再重新执行一次。

票数 11
EN

Stack Overflow用户

发布于 2013-03-03 19:15:44

很明显,java.beans包在android上并不完整。常见的解决方案是重新打包依赖于它们的java.beans和jar,以使用不同的包名而不是java.beans。这正是前面提到的openbeans所做的事情。一个有趣的问题来自android的错误消息:If you find that you cannot do this, then that is an indication that the path you are on will ultimately lead to pain, suffering, grief, and lamentation.

为了避免这条路,我会从研究实际使用openbeans的选项开始,并试图迫使第三方使用这些选项。从您正在编写的内容来看,不清楚jar是不能更改还是不允许更改(您提到了两者)。我不知道更改jars的法律含义,但从技术上讲,总是有可能的,例如,尝试反向工程类,用aspectj之类的东西做一些构建时插装。如果这是不允许的,我认为运行时插装是可以完成的,例如,dexmaker可以为使用java.beans的第三方类创建代理,您可以重新实现该类的一部分。

我也在谷歌上搜索了一下这个话题,我看到了this。他们只是使用java.beans包,并为安卓编译它。这对我来说似乎很脆弱,但看起来像是在工作。

不幸的是,这不是一个解决方案,只是我想分享的想法。希望你能发现这些有用的东西。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15065545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档