Сборка Android Maven вызывает проблемы при обработке «javax / xml / namespace / QName.class»: - PullRequest
10 голосов
/ 30 апреля 2011

Следующая ошибка отображается в консоли Maven каждый раз, когда я выполняю Проект -> Очистить.В целевую папку встроен только файл jar , файл apk не создается.Может ли кто-нибудь помочь мне решить эту проблему?

С уважением,

Сэм.

Моя среда разработки;

  • Eclipse Helios
  • Уровень API Android SDK 8
  • Eclipse ADT 10.0.1
  • Интеграция Maven для инструментов разработки Android 0.2.5

4/30/11 21:54:07 IST: [INFO] пропустить несуществующий ресурсDirectory D: \ my \ workspace \ android \ android-test-app \ src \ test \ resources 4/30/ 11 9:54:07 IST: [INFO] Не компилирует источники тестов 30.04.11 21:54:07 IST: [INFO] Тесты пропускаются.30.04.11 21:54:07 IST: [INFO] D: \ my \ android-sdk-my \ android-sdk-windows / platform-tools / dx.bat [--dex, --output = D: \ my \ workspace \ android \ android-test-app \ target \ classes.dex, D: \ my \ workspace \ android \ android-test-app \ target \ android-classes] 30.04.11 9:54:17:00 IST: [INFO] 30.04.11 21:54:17 IST: [INFO] обработка ошибок "javax / xml / namespace / QName.class": 30.04.11 21:54:17 IST:[INFO] 30.04.11 21:54:17 IST: [INFO] Неправильное или ошибочное использование основного класса (java. * Или javax. *) 30.04.11 21:54:17 IST: [INFO], если не создается базовая библиотека.30.04.11 21:54:17 IST: [ИНФО] 30.04.11 21:54:17 IST: [ИНФО] Часто это происходит из-за непреднамеренного включения файла основной библиотеки 30.04.11 9:54:17 вечера IST: [INFO] в проекте вашего приложения при использовании IDE (например, 30.04.11 21:54:17 IST: затмение [INFO]).Если вы уверены, что не намеренно определяете 30.04.11 21:54:17 IST: основной класс [INFO], то это наиболее вероятное объяснение того, что такое 30.04.11 21:54:17IST: [INFO] продолжается.30.04.11 21:54:17 IST: [ИНФО] 30.04.11 21:54:17 IST: [ИНФО] Однако вы, возможно, пытаетесь определить класс в ядре 4/30 /11 9:54:17 IST: пространство имен [INFO], источник которого вы, возможно, взяли, например, 30.04.11 21:54:17 IST: [INFO] из проекта виртуальной машины, отличной от Android,Это будет больше всего 30.04.11 21:54:17 IST: [ИНФО], конечно, не сработает.Как минимум, это ставит под угрозу совместимость вашего приложения с будущими версиями платформы. 30.04.11 21:54:17 IST: [INFO].30.04.11 21:54:17 IST: [ИНФО] Это также часто сомнительной законности.30.04.11 21:54:17 IST: [ИНФО] 30.04.11 21:54:17 IST: [ИНФО] Если вы действительно намерены создать базовую библиотеку - всего 4/30 /11 9:54:17 IST: [INFO] подходит для создания полноценной виртуальной машины 30.04.11 21:54:17 IST: дистрибутив [INFO], а не для компиляции приложения - затем используйте 4/ 30/11 21:54:17 IST: [INFO] опция "--core-library" для подавления этого сообщения об ошибке.30.04.11 21:54:17 IST: [ИНФО] 30.04.11 21:54:17 IST: [ИНФО] Если вы продолжаете использовать «--core-library», но на самом деле 4/ 30/11 9:54:17 PM IST: [INFO] строит приложение, затем предупредите, что ваше приложение 30.04.11 21:54:17 IST: [INFO] все равно не удастся собрать или запустить, вкакой-то момент.Пожалуйста, будьте 30.04.11 21:54:17 IST: [INFO] подготовлен для недовольных клиентов, которые, например, обнаружат, что ваше 30.04.11 21:54:17 IST: приложение [INFO] перестает функционироватькак только они обновят свою операционную систему, 30.04.11 21:54:17 IST: [INFO] система.Вы будете виноваты в этой проблеме.30.04.11 21:54:17 IST: [ИНФО] 30.04.11 21:54:17 IST: [ИНФО] Если вы на законных основаниях используете какой-то код, который случился в 30.04.119:54:17 IST: основной пакет [INFO], то самая простая безопасная альтернатива, которую вы имеете, - 30.04.11 21:54:17 IST: [INFO] перепаковать этот код.То есть переместите эти классы в 30.04.11 21:54:17 IST: [INFO] ваше собственное пространство имен пакетов.Это означает, что они никогда не будут в 30.04.11 21:54:17 IST: [INFO] конфликтует с основными классами системы.JarJar - это инструмент, который может помочь 30.04.11 21:54:17 IST: [INFO] вам в этом начинании.Если вы обнаружите, что не можете этого сделать, то30.04.11 21:54:17 IST: [ИНФОРМАЦИЯ], которая указывает на то, что путь, по которому вы идете, в конечном итоге 30.04.11 21:54:17 IST: [ИНФО] приводит к боли, страданиям, печали и скорби. 30.04.11 21:54:17 IST: [ИНФО] 30.04.11 21:54:17 IST: [ИНФО] 1 ошибка; прерывание

Ответы [ 2 ]

16 голосов
/ 16 апреля 2012

Если вы используете интеграцию Android Maven, вы должны добавить «предоставленную» область в зависимости Android SDK.

<dependency>        
<groupId>com.google.android</groupId>        
<artifactId>android</artifactId>        
<version>2.3.3</version>        
<scope>provided</scope>        
</dependency>
14 голосов
/ 01 ноября 2011

Вы можете исключить неявные зависимости с помощью тега exclude. QName, кажется, находится, например, в пакет xpp3. Я решил эту проблему, добавив в мой pom следующие исключения (которые уже содержали зависимость от google-api-client-googleapis):

<dependency>
  <groupId>com.google.api.client</groupId>
  <artifactId>google-api-client-googleapis</artifactId>
  <version>1.4.1-beta</version>
  <exclusions>
    <exclusion>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
    </exclusion>
    <exclusion>
      <groupId>xpp3</groupId>
      <artifactId>xpp3</artifactId>
    </exclusion>
</exclusions>
</dependency>

Если вам нужно выяснить, откуда берутся конфликтующие файлы классов, запустите, например:

for x in `find ~/.m2/repository/ -name \*.jar`; do jar tf $x|grep QName.class && echo "Found in: $x"; done`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...