Android: ошибка, включающая / переупаковывающую зависимости, которые ссылаются на основные классы javax - PullRequest
14 голосов
/ 11 мая 2011

Я работаю над приложением 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 ]

28 голосов
/ 06 сентября 2011

Определите вашу простую зависимость 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 голосов
/ 22 мая 2011

Я использую android-maven-plugin, и добавление <coreLibrary>true</coreLibrary> к тегу <configuration> плагина в POM работает для меня. Однако есть ошибка: https://github.com/jayway/maven-android-plugin/pull/34,, которую необходимо включить, чтобы исправить используемый плагин, так как ошибка не будет исправлена ​​до 3.0. Вот как у меня это работает, используя 2.9.0-SNAPSHOT.

  1. добавить плагин Repository, указывающий на http: // oss.sonatype.org/content/repositories/jayway-snapshots/, чтобы получить 2.9.0-SNAPSHOT
  2. обновите версию своего плагина, чтобы использовать 2.9.0-SNAPSHOT и добавьте true в pom.xml
  3. получить исправление: git clone https://github.com/kevinpotgieter/maven-android-plugin.git
  4. удалить src / test / java / com: чтобы тест не провалился
  5. мвн пакет
  6. скопируйте его и перезапишите локальный кэш maven в .m2 (вам может понадобиться удалить ваш репозиторий плагинов, ваш перезаписывается каждый раз.)

Шаг 3-6 не понадобится после того, как исправление попадет в 2.9.0-SNAPSHOT.


Обновление от июля 2010 года: в 2.9.0-бета-4 есть исправление, поэтому вам не нужен вышеуказанный обходной путь, если вы используете 2.9.0-бета-4 или новее. Я протестировал 2.9.0-бета-5, который работал просто отлично.

1 голос
/ 01 июня 2011

Spring Android использует Maven для интеграции Simple.Взгляните на следующий URL-адрес, в нем должны быть приведены указания о том, как заставить Maven работать с Simple.

http://static.springsource.org/spring-android/docs/1.0.x/reference/html/rest-template.html

...