2011-05-11 52 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,它工作得很好。