【问题标题】:Android Maven build gives trouble processing "javax/xml/namespace/QName.class":Android Maven 构建在处理“javax/xml/namespace/QName.class”时出现问题:
【发布时间】:2011-04-30 16:32:29
【问题描述】:

每次我执行 Project -> Clean 时,Maven 控制台都会显示以下错误。目标文件夹中仅构建 jar 文件,未构建 apk 文件。 谁能帮我解决这个问题?

问候,

山姆。

我的开发环境是;

  • 日食太阳神
  • Android SDK API 级别 8
  • Eclipse ADT 10.0.1
  • 适用于 Android 开发工具 0.2.5 的 Maven 集成

4/30/11 9:54:07 PM IST:[INFO] 跳过不存在的资源目录 D:\my\workspace\android\android-test-app\src\test\resources 2011 年 4 月 30 日晚上 9:54:07 IST:[INFO] 未编译测试源 2011 年 4 月 30 日晚上 9:54:07 IST:[INFO] 测试被跳过。 2011 年 4 月 30 日晚上 9: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] 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 故障处理“javax/xml/namespace/QName.class”: 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 对核心类(java.* 或 javax.*)的不明智或错误使用 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 未构建核心库时。 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 这通常是由于无意中包含了核心库文件 2011 年 4 月 30 日晚上 9:54:17 IST:使用 IDE 时(例如 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] Eclipse)。如果你确定你不是故意定义一个 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 核心课程,那么这是最可能的解释 IST 2011 年 4 月 30 日晚上 9:54:17:[信息] 继续。 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 但是,您实际上可能正在尝试在核心中定义一个类 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 命名空间,您可能已经获取了它的来源,例如, 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 来自非 Android 虚拟机项目。这将最 IST 2011 年 4 月 30 日晚上 9:54:17:[INFO] 肯定行不通。至少会危及 IST 2011 年 4 月 30 日晚上 9:54:17:[INFO] 您的应用与平台未来版本的兼容性。 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] 它的合法性也经常受到质疑。 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 如果你真的打算构建一个核心库——这只是 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 适合作为创建完整虚拟机的一部分 4/30/11 9:54:17 PM IST:[INFO] 分发,而不是编译应用程序 - 然后使用 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] “--core-library”选项以禁止显示此错误消息。 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 如果您继续使用“--core-library”,但实际上 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 构建应用程序,然后预先警告您的应用程序 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 在某些时候仍然无法构建或运行。请成为 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 为愤怒的客户准备,例如,他们发现您的 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 应用程序在升级其操作后停止运行 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 系统。你会为这个问题负责。 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 如果您合法地使用一些恰好位于 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 核心包,那么您拥有的最简单安全的替代方案是 IST 2011 年 4 月 30 日晚上 9:54:17:[INFO] 重新打包该代码。也就是说,将有问题的类移动到 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 你自己的包命名空间。这意味着他们永远不会在 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 与核心系统类冲突。 JarJar 是一个可以提供帮助的工具 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 你在这方面的努力。如果你发现你无法做到这一点,那么 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 这表明您所走的道路最终将 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 导致痛苦、痛苦、悲伤和哀叹。 2011 年 4 月 30 日晚上 9:54:17 IST:[信息] 2011 年 4 月 30 日晚上 9:54:17 IST:[INFO] 1 错误;中止

【问题讨论】:

  • 有趣的是其他人在我发现它之前两小时发布了这个问题:) 我没有解决方案,但我在错误上找到了这个线程:code.google.com/p/maven-android-plugin/issues/detail?id=68 这似乎是一个问题一年了,根据该线程中的 cmets,我不确定为什么它还没有被修复。
  • 还有一个注意事项:我的错误源于在 google 数据 API 中包含 xpp3 jar 依赖项,并且我没有使用 maven 进行构建
  • @jk 排除依赖然后...
  • 嗨,我已经排除了所有正在重用的依赖项,但是没有运气。关于这个问题的任何想法?

标签: android eclipse maven


【解决方案1】:

如果您使用的是 android maven 集成,则应在您的 android sdk 依赖项中添加“provided”范围。

<dependency>        
<groupId>com.google.android</groupId>        
<artifactId>android</artifactId>        
<version>2.3.3</version>        
<scope>provided</scope>        
</dependency>

【讨论】:

    【解决方案2】:

    您可以使用 exclude-tag 排除隐式依赖项。 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`
    

    【讨论】:

      猜你喜欢
      • 2012-11-12
      • 2018-06-06
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 2019-10-04
      相关资源
      最近更新 更多