Android maven build(eclipse)失败,原因是;意外的顶级异常”;(使用odata4j依赖项)

Android maven build(eclipse)失败,原因是;意外的顶级异常”;(使用odata4j依赖项),android,eclipse,maven,odata4j,Android,Eclipse,Maven,Odata4j,我在构建android maven项目(EclipseM2e,android for maven)时遇到问题 “安装”目标将以以下方式继续: [INFO] UNEXPECTED TOP-LEVEL EXCEPTION: [INFO] java.lang.IllegalArgumentException: already added: Ljavax/persistence/Access; [INFO] at com.android.dx.dex.file.ClassDefsSection.add

我在构建android maven项目(EclipseM2e,android for maven)时遇到问题

“安装”目标将以以下方式继续:

[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Ljavax/persistence/Access;
[INFO]  at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
我已将以下依赖项添加到项目中:

<dependency>
    <groupId>org.odata4j</groupId>
    <artifactId>odata4j-jersey</artifactId>
    <version>0.7.0</version>
</dependency>
我做错什么了吗?我对maven还是很陌生


谢谢

这是因为您的构建中存在重复的类。如果Eclipse类路径包含多个同名/包的类,ADT将抛出s

我建议你跑步
mvn依赖关系:树
从中可以了解整个情况

[INFO] +- com.sun.jersey:jersey:jar:0.8-ea-SNAPSHOT:compil
[INFO] |  +- javax.ws.rs:jsr311-api:jar:0.8:compile
[INFO] |  \- asm:asm:jar:3.1:compile
[INFO] \- com.sun.jersey:jersey-client:jar:1.9.1:test
[INFO]    \- com.sun.jersey:jersey-core:jar:1.9.1:test
重复项是从
odata4j jersey
中通过传递方式提取的一些依赖项。为了修复它们,您需要在副本上添加如下内容:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>
</project>

...
示例项目a
项目A
1
编译
示例项目B
B项目
我得到了解决方案:

似乎odata4j的两个依赖项:

eclipselink-2.1.2
javax.persistence
有一些共同的课程

因此,当一个或另一个依赖项被排除时,问题就解决了

看起来这只是android/adt的问题。通常您不需要排除单个工件的依赖项,是吗

依赖项现在如下所示:

<dependency>
    <groupId>org.odata4j</groupId>
    <artifactId>odata4j-core</artifactId>
    <version>0.7.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
        </exclusion>
    </exclusions>
</dependency>

org.odata4j
odata4j型芯
0.7.0
org.eclipse.persistence
javax.persistence
非常感谢Mite提供的有用提示

问候,,
亚历克斯

你好,谢谢你的回答。在依赖关系树中,我只看到一次javax持久性。所以我不知道这门课的第二次出现是从哪里来的。我真的不确定要在排除项中添加什么。请您将日志添加为comment
mvn dependency:tree-Dverbose
当然,我添加了依赖项输出。
<dependency>
    <groupId>org.odata4j</groupId>
    <artifactId>odata4j-core</artifactId>
    <version>0.7.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
        </exclusion>
    </exclusions>
</dependency>