Как использовать javax.xml.transform.stax в Android Studio?

Я столкнулся со странной проблемой в Android Studio. Я также использую последнюю версию JDK. Я не могу импортировать следующее:

  • javax.xml.stream
  • javax.xml.transform.stax

Они оба недоступны, и я не знаю, почему. В проекте, отличном от Android, я могу импортировать их. Любая подсказка, почему они отсутствуют в Android?

Если нет, простое решение состоит в том, что я добавил эти зависимости от maven. Но после запуска я получаю эту ошибку:

"Опрометчивое или ошибочное использование базового класса (java.* или javax.*) без создания базовой библиотеки.


person code    schedule 20.04.2016    source источник


Ответы (1)


Android не использует тот же Java JDK, который вы используете для настольного или серверного приложения; он использует собственную реализацию JDK, которая добавляет android.* иерархию, но исключает некоторые пакеты из стандартного JDK, особенно в javax.* расширениях Java. К сожалению для вас, javax.xml.stream и javax.xml.transform.stax относятся к тому, что они не решили реализовать. Более того, среда выполнения Android не позволит вам загружать какие-либо классы java.* или javax.* из внешнего файла JAR по соображениям безопасности**. Этот ответ может немного лучше описать ситуацию.

Вероятно, вам лучше всего: 1) использовать другую стороннюю библиотеку, специально созданную для Android, например SimpleXML. ; 2) найдите переупакованную версию библиотек, например это усилие JAXB; или 3) использовать такой инструмент, как Jar Jar Links, чтобы сделать переупаковку для вас.

Также см. это превосходное руководство при разборе JSON и XML в Android.

** Примечание. Я не могу найти документацию от Google, подтверждающую это; это просто часто повторяемый «факт». Если кто-нибудь может указать на авторитетное заявление об обработке Android сторонних классов java[x].*, пожалуйста, прокомментируйте со ссылкой или отредактируйте этот ответ.

person Dalbergia    schedule 16.06.2017