我正在尝试用maven和tycho构建多个eclipse产品。我目前遇到了一个问题,Bundle a依赖于Bundle B中的一个类。捆绑包B的封装结构类似于:
a.b.c.d.e.f.Class
当我现在尝试构建A时,我得到了一个编译错误,看起来有点像这样:
import a.b.c.d.e.f.MyClass;
[ERROR] ^^^^^^^^^
[ERROR] The import a.b.c.d.e cannot be resolved
如果仔细观察,您会发现Maven显然试图解析错误的包,因为它只声明不能解析a.b.c.d.e
,而要导入的类实际上在a.b.c.d.e.f
中。
此外,a.b.c.d.e
中不存在类。我尝试过将a.b.c.d.e
作为导出包包含在Manifest中,并将其从该列表中删除,但都没有帮助。
这里可能有什么问题?
在使用非常详细的日志记录运行maven之后,我仔细检查了参数,即maven(tycho(在编译Bundle A时传递给JDT编译器。我注意到,它只传递了我添加到Bundle B的类路径中的JAR。
然后我注意到,在Bundle B的MANIFEST中,我指定了Bundle-Classpath
,类路径上只有JAR。我以前认为捆绑包本身的类会默认添加,但在将,.
添加到Bundle-Classpath
属性后,构建再次工作。
如果你想了解更多关于它的信息,这篇文章为我指明了正确的方向。