Eclipse错误:从所需的.class文件间接引用?

时间:2011-04-05 04:21:12

标签: eclipse

我在Eclipse中遇到错误。此错误消息的含义是什么:

The type iglu.ir.TermVector cannot be resolved. It is indirectly referenced from required .class files

21 个答案:

答案 0 :(得分:165)

这意味着:“您使用的类需要另一个不在类路径上的类。”你应该确保(正如Harry Joy建议的那样)将所需的jar添加到类路径中。

答案 1 :(得分:20)

这很可能是Eclipse的一个问题,因为它是一个实际的错误。我忽略了错误并运行了它抱怨的endpointInterface的web服务,它运行正常,除了每次我想运行它时都必须处理对话框。只是另一个不透明的错误告诉我什么。

答案 2 :(得分:13)

有时我会遇到这种情况,我总是用“mvn eclipse:clean”命令修复旧的属性,然后运行mvn eclipse:eclipse -Dwtpversion = 2.0(当然对于web项目)。保存了一些旧属性,因此有时会混淆日食。

答案 3 :(得分:11)

由于已损坏的本地maven存储库,我遇到此错误。

所以,为了解决问题,我所要做的只是进入我的存储库并删除相关.jar所在的文件夹,然后在Eclipse中强制update maven

答案 4 :(得分:7)

听起来这是一个已知的问题(Bug 67414),已在3.0中得到解决......有人评论说它也是在3.4中发生的。

与此同时,解决方法是从项目中删除JRE系统库,然后再将其添加回来。

Here are the steps:

转到包含构建错误的项目属性(右键单击>属性)

查看“构建路径”部分中的“库”选项卡

在列表中找到“JRE系统库”(如果缺少这个,那么此错误消息不是日食错误,而是错误配置的项目)

删除“JRE系统库”

点击“添加库...”,选择“JRE系统库”并为项目添加适当的JRE(例如'工作区默认JRE')

在库选择中单击“完成”,在项目属性中单击“确定”,然后等待重新构建项目

希望错误能够得到解决......

答案 5 :(得分:5)

当jar文件中的类不遵循与jar文件夹结构相同的结构时,会发生此错误。

e.g。如果你的类文件包有com.test.exam包,并且这个类文件创建的classes.jar有结构test.exam ...将抛出错误。您需要更正classes.jar的包结构,然后将其包含在ecplipse构建路径...

答案 6 :(得分:3)

我得到了这个例外,因为eclipse正在使用不同版本的jdk,只是改为正确,干净,构建和工作!

答案 7 :(得分:3)

我在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中消失了。

答案 8 :(得分:2)

如果您仍然无法找到设置错误,可以尝试使用Project - >清理并清理工作区中的所有项目。

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

答案 9 :(得分:2)

对我来说,当我将jdk升级到1.8.0_60并且我的旧套装已经使用了很长时间时,就会发生这种情况。如果我回到jdk1.7.0_25,所有这些问题都消失了。关于JRE和库之间的兼容性似乎是一个问题。

答案 10 :(得分:1)

当我只更改某些svn设置而不是代码中的任何内容时,我收到了错误。只是清理项目修复了错误。

答案 11 :(得分:1)

就我而言,我创建了一个项目并创建了minSdkVersion=9targetSdkVersion=17。我使用了自动生成的libs/android-support-v4.jar。我还必须使用ActionBarActivity来使用android-support-v7-appcomapt.jar。所以我只是从android-support-v7-appcompat.jar文件夹中复制了android-sdk/extras/andrid/support/v7/appcompat/libs文件并将其粘贴到我的项目libs文件夹中。这导致了上述错误。 所以基本上,我需要将android-support-v4.jar文件从android-sdk/extras/andrid/support/v7/appcompat/libs放到我的项目libs文件夹中。据我所知,v7.jar文件依赖于v4.jar文件。因此,它需要自己的v4.jar文件,而不是我的项目,自动创建v4.jar文件。

答案 12 :(得分:1)

快速而简单我用这种方式修复它(在Windows XP家庭版上使用ADT版本:v21.0.0-531062)

  1. 打开清单文件。
  2. 将现有项目minSdkVersion更改为与maxSdkVersion相同的值 (建议:创建一个新项目可能会很好,看看它的maxSdkVersion是什么)
  3. 保存清单文件。
  4. 右键单击项目,然后选择“构建项目”。
  5. 从顶部菜单:项目 - 清理.. - 检查只有相关项目,下面我选中了立即开始构建并仅构建所选项目并确定。
  6. 打开java文件 - 不再出现红色错误!
  7. 返回上面的步骤1并将minSdkVersion更改为原始值(尽可能多地使用Android版本。)
  8. 它起作用但是问题每隔几天就会恢复一次。我也是如上所述,它解决并让我发展。

答案 13 :(得分:1)

为我解决的问题是right clicking on project > Maven > Update Project

答案 14 :(得分:0)

除了已经建议的遗漏类文件的原因之外,此错误还可以指示重复的类文件,当构建路径上的类文件使用另一个在构建路径中具有多个定义的类时,eclipse会报告此错误。 / p>

答案 15 :(得分:0)

由于你给我们的细节很少,你很可能做的事情,这是一个非常容易犯的错误,而不是前往

Build Path > Configure Build Path > Projects

并从那里添加您的其他项目文件夹,而不是去

Build Path > Configure Build Path > Libraries

并从那里添加你的项目文件夹。

如果您的代码完全正确,但是通过ctrl+space快捷方式自动重新组织导入,而不是引用com.your.additionalproject的import语句,则绝对是这种情况,您的引用都指向bin。 com.your.additionalproject。

注意垃圾箱。这意味着您通过将其他项目文件夹结构视为库来间接引用您的类,使您的IDE能够找到您正在引用的完全二进制类。

要更正此问题,请从“库”中删除该文件夹,然后将其添加到“项目”选项卡下,并重新组织导入。你的项目应该可以正常工作。

答案 16 :(得分:0)

当我使用新的eclipse版本并尝试使用我在旧的eclipse版本中使用的前一个工作区时,会出现此错误。

以下是我如何解决问题:

在Package Explorer上右键单击我的项目 - >属性 - > Java构建路径 - >图书馆 - >我在JRE系统库上看到一个错误(交叉标志)。因为无法找到路径。 - >双击JRE系统库 - >选择选项"工作区默认JRE" - >完成 - >好。 - > BUM正在工作

FYI。

答案 17 :(得分:0)

在我的情况下,这是我向pom.xml文件添加新依赖项的结果。

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

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

就我而言,它就像锁定新版本一样简单。您可以通过右键单击该条目来执行此操作 - 可以在上下文菜单中将其锁定。

答案 18 :(得分:0)

将Build路径中的JRE指向JDK。那对我有用。

答案 19 :(得分:0)

对我来说,以上解决方案均无效。 对我有用的是选择该类中的所有代码,然后将其转换为注释, 保存,然后将其转换回普通文本,错误消失了。

答案 20 :(得分:0)

就我而言,在 Tomcat 中启动 Web 应用程序时,问题是“无法解决 javax.ws.rs.webapplicationexception”。

添加以下库 (Maven) 的解决方案:

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0</version>
</dependency>