Android: ошибка, включающая/переупаковка зависимостей, которые ссылаются на основные классы javax
Я работаю над Android-приложением, используя Maven в качестве инструмента построения. Мне удалось установить правильную настройку (зависимости maven экспортируются в apk и т.д.), Однако у меня есть одна проблема, которая сводит меня с ума.
Я хочу включить зависимость от simpleframework xml parser, как указано в моем файле 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, но это тоже не работает.
Может ли кто-нибудь помочь мне с этим? Много, большое спасибо заранее!
Ответы
Ответ 1
Определите свой простой-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>
Ответ 2
Я использую android-maven-plugin, и добавление <coreLibrary>true</coreLibrary>
в тег <configuration>
плагина в POM работает для меня. Однако есть ошибка: https://github.com/jayway/maven-android-plugin/pull/34, которую нужно включить, чтобы исправить плагин, который вы используете, поскольку ошибка не будет исправлена до 3,0. Вот как я заработал у меня, используя 2.9.0-SNAPSHOT.
- добавьте плагинRepository, указывающий на http://oss.sonatype.org/content/repositories/jayway-snapshots/, чтобы получить 2.9.0-SNAPSHOT
- обновите версию своего плагина для использования 2.9.0-SNAPSHOT и добавьте <coreLibrary> true </coreLibrary> в pom.xml
- получить исправление: git clone https://github.com/kevinpotgieter/maven-android-plugin.git
- удалить src/test/java/com: поэтому тест не будет терпеть неудачу
- mvn package
- скопируйте его и перезапишите локальный кэш maven в .m2 (вам может потребоваться удалить ваш репозиторий плагинов, который каждый раз перезаписывается.)
Шаг 3-6 не понадобится после того, как исправление попадает в 2.9.0-SNAPSHOT.
Обновление июль 2010: 2.9.0-beta-4 имеет исправление, поэтому вам не требуется описанное выше решение, если вы используете 2.9.0-beta-4 или новее. Я тестировал 2.9.0-beta-5, который работал просто отлично.
Ответ 3
Spring Android использует Maven для интеграции Simple. Взгляните на следующий URL-адрес, он должен указать указатели на то, как заставить Maven работать с Simple.
http://static.springsource.org/spring-android/docs/1.0.x/reference/html/rest-template.html