Android:错误包括/重新包装引用javax核心类的依赖项

时间:2011-05-11 13:00:28

标签: java android maven simple-framework jarjar

我正在使用Maven作为构建工具开发Android应用。我设法正确设置evertyhing(maven依赖项导出到apk等),但是我还有一个问题让我发疯。

我希望在我的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类的简单xml解析器的错误结果,但我还没有找到解决方案(设置--core-library标志没用)。

我目前正试图用maven-jarjar-pluging重新打包依赖,但这似乎也不起作用。

任何人都可以帮我解决这个问题吗?很多,非常感谢提前!

3 个答案:

答案 0 :(得分:28)

像这样定义你的simple-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>

答案 1 :(得分: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. 添加一个指向http:// oss.sonatype.org/content/repositories/jayway-snapshots/的pluginRepository以获取2.9.0-SNAPSHOT
  2. 更新您的插件版本以使用2.9.0-SNAPSHOT并添加&lt; coreLibrary&gt; true&lt; / coreLibrary&gt;到pom.xml
  3. 获得修复:git clone https://github.com/kevinpotgieter/maven-android-plugin.git
  4. 删除src / test / java / com:所以测试不会失败
  5. mvn package
  6. 复制它并覆盖.m2中的本地maven缓存(您可能需要删除您的插件存储库,每次都会被覆盖。)
  7. 修复程序进入2.9.0-SNAPSHOT后,无需执行步骤3-6。


    2010年7月更新:2.9.0-beta-4有修复,因此如果您使用2.9.0-beta-4或更高版本,则不需要上述解决方法。我测试了2.9.0-beta-5,效果很好。

答案 2 :(得分:1)

Spring Android使用Maven集成Simple。看看下面的URL,它应该提供有关如何让Maven使用Simple的指示。

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