2011-05-11 21 views
14

我正在使用Maven作爲構建工具的Android應用程序。我設法設置正確(maven依賴關係導出到apk等),但我有一個剩下的問題,這讓我瘋狂。Android:引用javax核心類的錯誤包括/重新包裝依賴關係

我想包括定義爲我的POM文件遵循上simpleframework's xml parser的依賴:

<dependency> 
    <groupId>org.simpleframework</groupId> 
    <artifactId>simple-xml</artifactId> 
    <version>2.5.3</version> 
</dependency> 

當我在這個項目簽發mvn install,我得到以下錯誤(截斷):

trouble processing "javax/xml/namespace/NameSpaceContext.class" ... 

我知道引用這些javax-classes的簡單xml解析器的錯誤結果,但是我還沒有找到解決方案(設置--core-library標誌是無用的)。

我目前正在嘗試用maven-jarjar-pluging重新包裝依賴項,但這似乎並不奏效。

任何人都可以幫我解決這個問題嗎?很多,很多人提前感謝!

回答

28

定義您簡單的XML depedency這樣的:

<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> 
+0

感謝您的答覆。我目前沒有開展這個項目,但我會記住這個項目以備將來使用。如果它的工作,那麼,我會回來,並確保接受這個答案:) – thomaux 2011-09-06 17:27:27

+3

它有效的人!接受Marcin答案:) – 2011-10-20 13:34:41

+0

嘗試此解決方案,但我仍然有一個org.simpleframwork.xml.core.Persister找不到錯誤。 – 2014-05-05 12:50:46

2

我使用android-maven-plugin,並將<coreLibrary>true</coreLibrary>添加到POM中插件的<configuration>標籤。但是,有一個錯誤:https://github.com/jayway/maven-android-plugin/pull/34,你需要包括修復你正在使用的插件,因爲錯誤將不會被修復,直到3.0。以下是我如何使用2.9.0-SNAPSHOT爲我工作。

  1. 添加pluginRepository指向http:// oss.sonatype.org/content/repositories/jayway-snapshots/獲得2.9.0-SNAPSHOT
  2. 更新插件版本使用2.9.0-SNAPSHOT並添加< coreLibrary>真</coreLibrary>到pom.xml的
  3. 得到修復:混帳克隆https://github.com/kevinpotgieter/maven-android-plugin.git
  4. 刪除的src /測試/ JAVA/COM:所以測試不會失敗
  5. MVN包
  6. 複製它覆蓋在.m2目錄本地Maven緩存(您可能需要刪除您的插件庫你被覆蓋每次。)修復進入2.9.0-快照後

步驟3-6將沒有必要。


更新2010年7月:2.9.0-β-4具有修復,所以你如果使用2.9.0-β-4或更高版本不需要上述解決方法。我測試了2.9.0-beta-5,它工作得很好。