Есть ли проблема с ошибкой Android «Невозможно разрешить виртуальный метод java / beans / PropertyDescriptor»?

Я пытаюсь использовать сторонний файл jar в приложении для Android. Я был в состоянии использовать некоторые из классов в файле jar просто отлично. Однако один из классов ссылается на некоторые классы Java, которые, как представляется, не поддерживаются dalvik vm. Вот некоторые из ошибок, которые я вижу в 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. 

Похоже, что классы Java, связанные с интроспекцией и отражением, не поддерживаются dalvik. Я хотел бы узнать две вещи. Это план поддержки этого в далвике в ближайшем будущем? Во-вторых, есть ли у кого-нибудь предложение для работы, которая обошла бы эту проблему?

Solutions Collecting From Web of "Есть ли проблема с ошибкой Android «Невозможно разрешить виртуальный метод java / beans / PropertyDescriptor»?"

Похоже, что классы Java, связанные с интроспекцией и отражением, не поддерживаются dalvik.

Не на общем основании, AFAIK. Одна из целей основной команды Android заключается в том, чтобы сохранить прошивку маленькой, чтобы снизить стоимость устройств. Один из побочных эффектов состоит в том, чтобы включать только классы из java.* И javax.* , javax.* они считают необходимыми. Первоначально ни один из java.beans.* существовал в Android; Теперь доступно несколько классов и интерфейсов, но не весь пакет.

Это план поддержки этого в далвике в ближайшем будущем?

Вы узнаете, когда все остальные знают, а именно, только если он появится в выпуске.

Во-вторых, есть ли у кого-нибудь предложение для работы, которая обошла бы эту проблему?

Если сторонний JAR является проектом с открытым исходным кодом:

  1. Возьмите необходимые классы java.beans из Apache Harmony и поместите их в свой проект
  2. Рефакторинг их в отдельный пакет (например, bondy.beans ), поскольку Android не понравится, если вы попробуете загрузить классы java.beans в свой проект
  3. Измените сторонний JAR, чтобы использовать обновленную версию классов

Возможно, что jarjar может что-то с этим поделать – я еще не использовал этот инструмент и не знаю, насколько его возможности.

Апачская гармония давно ушла в отставку. Я использую openbeans . И это решает всю проблему для меня.