Android Maven构建在处理“javax / xml / namespace / QName.class”时遇到问题:

时间:2011-04-30 16:32:29

标签: android eclipse maven

每次我执行项目时, Maven 控制台中都会显示以下错误 - >清洁。目标文件夹中仅构建 jar 文件, apk 文件未构建。 有人可以帮我解决这个问题吗?

此致

萨姆。

我的发展环境是;

  • Eclipse Helios
  • Android SDK API等级8
  • Eclipse ADT 10.0.1
  • 适用于Android开发工具的Maven集成0.2.5

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

2 个答案:

答案 0 :(得分:16)

如果你正在使用android maven集成,你应该在你的android sdk依赖项中添加“提供”范围。

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

答案 1 :(得分:14)

您可以使用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`