我在Eclipse中出现了一个错误。这个错误信息是什么意思:

无法解析iglu.ir.TermVector类型。它是从必需的.class文件中间接引用的


当前回答

将Build路径中的JRE指向JDK。这对我很管用。

其他回答

右键单击您的项目->属性->maven->活动maven配置文件(逗号分隔) 然后在该框中写入pom.xml并检查来自工作区项目的解析依赖项

我在Eclipse 4.4.2中遇到过一个有趣的案例。我的项目(P1)引用了一个外部类(项目P2),它有两个同名但参数类型不同的方法:

public static void setItem(Integer id) …
public static void setItem(Item item) …

类型Item包含在第三个项目P3中,我不想在这里看到它。P1只调用了第一个方法:

ExternalClass.setItem(Integer.valueOf(12345));

因此,使用Item类的第二个方法没有被使用,而且P3确实不在编译类路径中——如果没有被使用,为什么要使用它呢?

Eclipse告诉我

The type ...Item cannot be resolved.
It is indirectly referenced from required .class files

从命令行编译不会产生任何此类问题。更改第二个方法的名称(此处未使用!)也使这个问题在Eclipse中消失了。

它的意思是:“您使用的类需要不在类路径上的另一个类。”您应该确保(如Harry Joy所建议的)将所需的jar添加到类路径中。

如果您的设置仍然没有发现任何错误,您可以尝试Project -> Clean并清理工作区中的所有项目。

编辑:抱歉,没有看到verbose_mode的建议…同样的事情

在我的例子中,这是因为我在pom.xml文件中添加了一个新的依赖项。

新的依赖项依赖于旧版本的库(2.5)。我的pom.xml中的另一个库需要相同的库,但它需要3.0版本。

出于某种原因,当Maven遇到这些冲突时,它会简单地忽略最新的版本。在Eclipse中查看pom.xml时,您可以选择底部的“依赖层次结构”选项卡,以查看依赖关系是如何解析的。在这里,您将发现是否因为这个原因而忽略了所讨论的库(以及类)。

在我的例子中,这就像锁定新版本一样简单。您可以通过右键单击该条目来做到这一点—在上下文菜单中有一个选项可以将其锁定。