- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有使用 java.beans.Introspector
、java.beans.BeanInfo
的第 3 方 jar(我无法更改)和 java.beans.PropertyDescriptor
.
如何在我的 android 应用程序中使用该 jar?
无法从第 3 方 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;
最佳答案
很明显 java.beans 包在 android 上不完整。常见的解决方案是重新打包 java.beans 和依赖它们的 jar 以使用不同的包名而不是 java.beans。这正是前面提到的openbeans 所做的。 android 错误消息中的一条有趣的 qoute 指出:如果您发现自己无法做到这一点,那么这表明您所走的道路最终会导致痛苦、痛苦、悲伤和悲叹。
为了避免这条路,我将首先研究实际使用 openbeans 的选项并尝试强制第 3 方使用这些选项。从您所写的内容来看,尚不清楚 jar 是不能更改还是不允许更改(您提到两者)。我不知道更换 jar 的法律含义,但从技术上讲,它总是可能的,例如尝试逆向工程类(class),使用 aspectj 之类的东西做一些构建时间检测。如果不允许这样做,我认为可以进行运行时检测,例如dexmaker可以为使用 java.beans 的第三方类创建代理,并且您可以重新实现该类的一部分。
还搜索了一下我看到的主题 this .他们只是使用 java.beans 包并为 android 编译它。这对我来说似乎很脆弱,但看起来它正在工作。
不幸的是,这不是一个解决方案,只是我想分享的想法。希望你觉得这些有用。
关于java - 使用使用 java.beans 类(Introspector、BeanInfo 或 PropertyDescriptor)的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15065545/
我使用此代码来查找给定类中的所有 Java 列表: BeanInfo beanInfo = Introspector.getBeanInfo(classx); PropertyDescriptor[]
我正在研究使用 Jigsaw 来减少微服务的占用空间。我必须找到的最后一个依赖项是 java.beans.Introspector。 想象一下当我发现我需要引入整个模块 java.desktop 时我
Java 内省(Introspector)深入理解 一些概念: 内省(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法。 JavaBea
我阅读了 JavaBeans 规范,但没有发现这种行为。这是一个错误吗? testPropertyType 失败,因为需要 Data 类 testPropertyReadable 成功,因为存在 De
给定以下代码框架,是否可以确定属性 foo 实际上是 String 类型? public class TestIntrospection { public static class Super
我用Java Introspector写了一个方法,但是我发现当setter/getter方法是static时,它不起作用! public class Bean { public static
我做了一个 super 简单的例子,没有任何意义。 public static void main(String [] args) throws IntrospectionException {
我正在使用内省(introspection)来检索 beans get 方法,并且我希望能够确定结果是数组还是基元,但我总是得到错误响应。即使我知道该类型是 ArrayList。同样,isArray(
我刚刚注意到 java.beans.Introspector getBeanInfo 没有获取任何超接口(interface)的属性。示例: public interface Person {
我正在使用第 3 方库动态创建 Java 类的实例并在 Introspector.getBeanInfo 的帮助下填充这些实例。某些请求可能会导致对 Introspector.getBeanInfo
我有一个由两个值组成的字段。这是序列化为 JSON 或从 JSON 序列化的字段,效果很好。 public String getRevisions() { return revisions; } pu
我正在尝试运行基于 LibGDX 的 Android 应用程序,该应用程序是使用 Spring 框架(不是 Android 的 Spring,而是普通的 Spring)构建的。有一个异常(except
我正在为我的 Android 应用程序使用 OpenCsv 解析 .csv 文件。我在 kotlin 中编写代码。这是我的代码: 这是我解析 csv 文件的方式: val beans: List =
我对 Interface 和 BeanInfo Introspector 中的默认方法有一个小问题。在这个例子中,有接口(interface):Interface public static inte
我对 Interface 和 BeanInfo Introspector 中的默认方法有一个小问题。本例中有接口(interface):Interface public static interfac
我有使用 java.beans.Introspector、java.beans.BeanInfo 的第 3 方 jar(我无法更改)和 java.beans.PropertyDescriptor. 如
我在带有 DCEVM(完整实现)的 JVM 1.7 和带有自定义插件的 HotSwapAgent 上运行 WebLogic,该插件在每个 onClassLoad 上触发。 我遇到了使用 java.be
我正在尝试使用 Proguard 来混淆我的 Android 应用程序。此外,我正在使用 IntelliJ Idea 11.1.3 构建发布签名的 APK,并在“打开模块设置”->“方面”->“编译器
我是一名优秀的程序员,十分优秀!