简体   繁体   English

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

[英]Eclipse Gradle buildship import sub project compilation error

I have project xxxWeb using project xxxAPI . 我有项目xxxWeb使用项目xxxAPI Both projects are sub project of a parent project. 这两个项目都是父项目的子项目。 Project xxxAPI uses a third-party library jar jar1.jar , which has a class somepackage.ClassA . Project xxxAPI使用第三方库jar jar1.jar ,它有一个类somepackage.ClassA Project xxxAPI itself also has identical somepackage.ClassA that project xxxWeb intends to use. 项目xxxAPI本身也有与xxxWeb打算使用的项目相同的somepackage.ClassA

However, Eclipse load somepackage.ClassA from jar1.jar instead, resulting in compilation error because jar1/somepackage/ClassA doesn't have the necessary fields like in xxxAPI/somepackage/ClassA . 然而,Eclipse的负载somepackage.ClassAjar1.jar代替,导致编译错误,因为jar1/somepackage/ClassA没有必要的领域,如在xxxAPI/somepackage/ClassA

In xxxWeb project classpath, Eclipse place xxxAPI project to the very end, which probably why the compiler pick jar1/somepackage/ClassA instead of xxxAPI/somepackage/ClassA . 在xxxWeb项目类路径中,Eclipse将xxxAPI项目放到最后,这可能是为什么编译器选择jar1/somepackage/ClassA而不是xxxAPI/somepackage/ClassA

This is not a problem in IntelliJ however. 但这不是IntelliJ中的问题。

Is there a cure for this? 有治疗方法吗?

The build script work fine, so I this is a question on Gradle's Eclipse plugin, and how to manipulate the generated classpath? 构建脚本工作得很好,所以我这是关于Gradle的Eclipse插件的问题,以及如何操作生成的类路径?

This is a bug of gradle as of version 2.14.1. 这是版本2.14.1中的gradle错误。 A workaround is to utilize the hook given by Eclipse Gradle plugin to remove the duplicated classpath entries 解决方法是利用Eclipse Gradle插件提供的钩子来删除重复的类路径条目

eclipse {
    classpath {
        file {
            whenMerged { cp ->
                cp.entries = cp.entries.unique{a,b -> a.path <=> b.path}
            }
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM