[英]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.ClassA
从jar1.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.