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

Я пытаюсь использовать сторонний 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. Я хотел бы выяснить две вещи. Это план поддержать это в далвике в ближайшем будущем? Во-вторых, есть ли у кого-нибудь предложение обойти эту проблему?

Ответы [ 2 ]

9 голосов
/ 30 марта 2011

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

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

Планируется ли это поддержать в dalvik в ближайшем будущем?

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

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

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

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

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

1 голос
/ 26 июня 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...