Java Eclipse Gradle buildship导入子项目编译错误

Java Eclipse Gradle buildship导入子项目编译错误,java,gradle,gradle-plugin,gradle-eclipse,Java,Gradle,Gradle Plugin,Gradle Eclipse,我使用projectxxxAPI创建了projectxxxWeb。这两个项目都是父项目的子项目。ProjectxxxAPI使用第三方库jarjar1.jar,它有一个classsomepackage.ClassA。项目xxxAPI本身也有相同的somepackage.ClassA项目xxxWeb打算使用的 但是,Eclipse从jar1.jar加载somepackage.ClassA,导致编译错误,因为jar1/somepackage/ClassA没有像xxxAPI/somepackage/Cl

我使用project
xxxAPI
创建了project
xxxWeb
。这两个项目都是父项目的子项目。Project
xxxAPI
使用第三方库jar
jar1.jar
,它有一个class
somepackage.ClassA
。项目xxxAPI本身也有相同的
somepackage.ClassA
项目
xxxWeb
打算使用的

但是,Eclipse从
jar1.jar
加载
somepackage.ClassA
,导致编译错误,因为
jar1/somepackage/ClassA
没有像
xxxAPI/somepackage/ClassA
中那样的必要字段

在xxxWeb项目类路径中,Eclipse将xxxAPI项目放在末尾,这可能是编译器选择
jar1/somepackage/ClassA
而不是
xxxAPI/somepackage/ClassA
的原因

然而,这在IntelliJ中不是问题

有治疗方法吗


构建脚本工作正常,所以我想这是一个关于Gradle的Eclipse插件的问题,以及如何操作生成的类路径?

从2.14.1版开始,这是Gradle的一个bug。解决方法是利用EclipseGradle插件提供的钩子删除重复的类路径条目

eclipse {
    classpath {
        file {
            whenMerged { cp ->
                cp.entries = cp.entries.unique{a,b -> a.path <=> b.path}
            }
        }
    }
}
日食{ 类路径{ 文件{ 合并时{cp-> cp.entries=cp.entries.unique{a,b->a.path b.path} } } } }
从2.14.1版开始,这是gradle的一个bug。解决方法是利用EclipseGradle插件提供的钩子删除重复的类路径条目

eclipse {
    classpath {
        file {
            whenMerged { cp ->
                cp.entries = cp.entries.unique{a,b -> a.path <=> b.path}
            }
        }
    }
}
日食{ 类路径{ 文件{ 合并时{cp-> cp.entries=cp.entries.unique{a,b->a.path b.path} } } } }
您应该将其格式化为更清晰的格式。图片可能也是个好主意。你应该把它格式化成更清晰的形式。一张照片也可能是个好主意。