Android: ошибка, включающая / переупаковывающую зависимости, которые ссылаются на основные классы javax
Я работаю над приложением для Android, используя Maven в качестве инструмента для сборки. Мне удалось правильно настроить evertyhing (maven зависимости экспортируются в apk и т. Д.), Однако у меня осталась одна проблема, которая сводит меня с ума.
Я хочу включить зависимость от xml-анализатора simpleframework, определенного следующим образом, в мой файл POM:
<dependency>
<groupId>org.simpleframework</groupId>
<artifactId>simple-xml</artifactId>
<version>2.5.3</version>
</dependency>
Когда я выпускаю mvn install
В проекте я получаю следующую ошибку (усечено):
trouble processing "javax/xml/namespace/NameSpaceContext.class" ...
Я знаю, что ошибка возникает из-за простого анализатора xml, ссылающегося на эти javax-классы, однако я пока не нашел решения (установка флага --core-library бесполезна).
В настоящее время я пытаюсь упаковать зависимость с помощью maven-jarjar-pluging, но, похоже, это тоже не работает.
Кто-нибудь может мне помочь с этим? Большое, большое спасибо заранее!
3 ответа
Определите вашу простую зависимость xml следующим образом:
<dependency>
<groupId>org.simpleframework</groupId>
<artifactId>simple-xml</artifactId>
<version>2.6.1</version>
<exclusions>
<!-- StAX is not available on Android -->
<exclusion>
<artifactId>stax</artifactId>
<groupId>stax</groupId>
</exclusion>
<exclusion>
<artifactId>stax-api</artifactId>
<groupId>stax</groupId>
</exclusion>
<!-- Provided by Android -->
<exclusion>
<artifactId>xpp3</artifactId>
<groupId>xpp3</groupId>
</exclusion>
</exclusions>
</dependency>
Я использую Android-Maven-плагин, и добавив <coreLibrary>true</coreLibrary>
к <configuration>
у меня работает тэг плагина в POM. Однако есть ошибка: https://github.com/jayway/maven-android-plugin/pull/34, которую необходимо включить для исправления используемого вами плагина, так как ошибка не будет исправлена до 3.0. Вот как у меня это работает, используя 2.9.0-SNAPSHOT.
- добавьте плагин-репозиторий, указывающий на http:// oss.sonatype.org/content/repositories/jayway-snapshots/, чтобы получить 2.9.0-SNAPSHOT
- обновите версию своего плагина для использования 2.9.0-SNAPSHOT и добавьте
true coreLibrary> в pom.xml - получить исправление: git clone https://github.com/kevinpotgieter/maven-android-plugin.git
- удалите src/test/java/com: чтобы тест не провалился
- мвн пакет
- скопируйте его и перезапишите локальный кэш maven в.m2 (вам может понадобиться удалить ваш репозиторий плагинов, ваш перезаписывается каждый раз.)
Шаг 3-6 не понадобится после того, как исправление попадет в 2.9.0-SNAPSHOT.
Обновление июль 2010: 2.9.0-бета-4 имеет исправление, поэтому вам не нужен вышеуказанный обходной путь, если вы используете 2.9.0-бета-4 или новее. Я протестировал 2.9.0-бета-5, который работал просто отлично.
Spring Android использует Maven для интеграции Simple. Взгляните на следующий URL-адрес, он должен содержать указания о том, как заставить Maven работать с Simple.
http://static.springsource.org/spring-android/docs/1.0.x/reference/html/rest-template.html