获得以下构建错误:“类型{—}无法解析。 它是从所需的.class文件间接引用的“

所以,我在Eclipse(Java)中有以下设置:

  1. 我有一个项目(让我们称之为“项目1”),它提供了一个接口(包是私有的)
  2. 我有另一个项目(“项目2”),其中包含项目1的包…此包中的类扩展了“项目1”中的包私有接口,并提供了一个很好的公共接口。
  3. 现在,我有“项目3”,它引用了“项目2”。 然后,项目3使用项目2中提供的公共对象。

从项目3中的项目2调用构造函数后,我得到以下内容:

“无法解析类型{—}。它是从所需的.class文件间接引用的”

如果我从项目3添加项目1的引用,一切都很好。 有没有办法不用这种方式参考项目3? 引用它真的没有意义。

我正在使用Eclipse(Helios)和最新的JDK等…

这是一种“传递依赖”。 您需要在类路径中使用您使用的任何类所需的所有类。 所以你需要在类路径中以某种方式获得项目1中的类 – 例如,你可以将它们打包为.jar 。 或者,您可以转到“ Build Path > Order and Export项目2的Build Path > Order and Export ”,并将“项目1”标记为已导出。

这里一个重要的事情是项目依赖只是一个开发“好” – 当你独立执行程序(或将它部署到容器)时,Eclipse项目依赖关系就消失了。 因此,您必须确保满足您的依赖关系。

不确定这是否是您正在寻找的。 尝试这个 –

  1. 在Eclipse中,右键单击Project2,选择Build Path – > Configure Build Path
  2. 转到“ 订购和导出”选项卡。 它应该列出Project1。 选中前面的框。
  3. 重建您的项目。

基本上,您从project2导出Project1依赖项。 因此,任何将project2添加为依赖项的项目都将看到Project1,而无需显式地将其添加到类路径中。 Eclipse将透明地做到这一点。