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


185

我在Eclipse中出错。此错误消息是什么意思:

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


21
在项目的源路径中添加包含iglu.ir.TermVector的jar。
哈里·乔伊

2
如果您确定提供了该课程,请尝试对所有项目进行清洁和刷新
Mirco

这发生在我身上,因为在我的罐子传递依赖的
Janac米娜

究竟!这个jar需要存在于pom.xml依赖项中。
gaurav

Answers:


191

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


3
通用而简单的答案在不同情况下对我有很大帮助:) THX
Mariusz Chw 2013年

特别是在尝试删除类时,请检查父类以引用丢失的类型。如果这并不总是意味着此消息,则可能在大多数情况下都是这样。
butallmj 2014年

是的,我发现这是由于引用的jar中缺少一些jar所致:)谢谢。
Ali Imran 2014年

21
@Arne,为什么这么说间接引用呢?它不应该说它根本没有被引用吗?
Pacerier 2014年

2
@Pacerier可能不正确。不是您的代码直接引用此类型,而是您的代码使用了某种东西,因此从您的代码到该类型的依赖项是“仅”可传递的,但是它存在。“间接”告诉您在哪里看。
hiergiltdiestfu

21

这很可能是Eclipse感到困惑的原因,因为这是一个实际错误。我忽略了该错误,并运行了Web服务,它抱怨了它的endpointInterface,并且运行良好,只是每次我想运行它时都必须处理对话框。另一个不透明的错误告诉我什么。


它也不在罐子里。这是所有相关项目中包含的项目之一。
杰里·米勒

3
我在eclipse中遇到了这个问题,但是通过maven进行构建的效果很好。解决方法是删除并重新导入包含必需类的Eclipse工作区中的项目。
PiersyP 2014年

有时可能会发生这种情况,但是我遇到了给出相同响应的错误,并且该项目无法构建。
Christopher Connery

13

有时我会遇到这种情况,我总是使用“ mvn eclipse:clean”命令修复该问题,以清除旧属性,然后运行mvn eclipse:eclipse -Dwtpversion = 2.0(当然对于Web项目)。保存了一些旧属性,因此有时使Eclipse感到困惑。


我清理了该项目(从Project-> Clean ...),它起作用了。
阿努·史宾·约瑟夫·拉吉

mvn eclipse:clean和/或mvn eclipse:eclipse似乎是使其运作的魔术。
Antoine Martin

13

由于本地Maven存储库已损坏,因此出现了此错误。

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


1
这对我有用,而上述所有方法均无效。当我的一个团队伙伴从pom更新存储库的版本时,发生了问题。
iaL

8

听起来这是一个已知的问题(错误67414),已在3.0中解决。...有人评论说,在3.4中也存在此问题。

同时,解决方法是从项目中删除JRE系统库,然后再次将其重新添加。

Here are the steps:

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

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

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

删除“ JRE系统库”

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

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

希望错误会得到解决...


是的,我在spring-web-3.0.1.RELEASE中遇到了同样的问题,尽管在我创建http.csrf()时它已作为pom.xml中的依赖项注册,并且在某些引用中已作为依赖项工作。 disable()。cors()。disable()。httpBasic()。and()。authorizeRequests().antMatchers(PUBLIC_MATCHERS).permitAll()。anyRequest()。authenticated(); 它崩溃了。然后我下载了jar文件并以传统的手动方式将其导入。
Tsakiroglou Fotis

5

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

例如,如果您的类文件包含com.test.exam包,并且从该类文件创建的classes.jar具有结构test.exam ...,则会引发错误。您需要更正classes.jar的包结构,然后将其包含在ecplipse构建路径中。


4

我遇到了这个异常,因为eclipse在不同版本的jdk中工作,只是更改为正确的,干净的,可编译的并能正常工作!


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


2
我在Eclipse Photon Release(4.8.0)中遇到了完全相同的问题
Delphin


2

如果仍然找不到任何设置错误,可以尝试Project-> Clean并清理工作空间中的所有项目。

编辑:对不起,没有看到verbose_mode的建议...同一件事


2

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


1

当我只是更改某些svn设置而不是代码中的任何内容时出现错误。只是清理项目即可修复错误。


1

以我为例,我创建了一个项目,并完成了minSdkVersion=9targetSdkVersion=17。我用自动生成的libs/android-support-v4.jar。我还不得不利用ActionBarActivityusing android-support-v7-appcomapt.jar。因此,我只是android-support-v7-appcompat.jarandroid-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文件。


1

快速,简单地我以这种方式解决了它(我在Windows XP家庭版上使用ADT版本:v21.0.0-531062)

  1. 打开清单文件。
  2. 将现有项目minSdkVersion更改为与maxSdkVersion相同的值(建议:创建一个新项目,看看它是什么是最好的)
  3. 保存清单文件。
  4. 右键单击项目,然后选择“生成项目”。
  5. 从顶部菜单中:项目-清洁..-选中仅相关项目,在下面的我选中“立即开始构建”,然后仅“构建选定的项目”,然后单击“确定”。
  6. 打开Java文件-不再有红色错误!
  7. 返回到上面的步骤1,然后将minSdkVersion更改为它的原始值(以支持尽可能多的Android版本)。

它有效,但问题每隔几天就会返回。我做与上述相同,它可以解决并让我发展。


0

除了已经建议的丢失类文件的原因外,该错误还可能指示类文件重复,当构建路径上的类文件使用在构建路径中具有多个定义的另一个类时,eclipse报告此错误。


0

由于您给我们提供的信息很少,因此您所做的很可能是而不是前往

Build Path > Configure Build Path > Projects

并从那里添加其他项目文件夹,而是转到

Build Path > Configure Build Path > Libraries

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

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

注意垃圾箱。这意味着您通过将其他项目文件夹结构视为库来间接引用您的类,这使您的IDE可以尽一切努力来查找您要引用的确切二进制类。

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


0

当我使用新的eclipse版本并尝试使用与旧eclipse版本一起使用的先前工作区时,发生了此错误。

这是我解决问题的方法:

在Package Explorer-> Properties-> Java Build Path-> Libraries->我在JRE System Library上看到一个错误(十字符号),右键单击我的项目。因为找不到路径。->双击JRE系统库->选择选项“ Workspace Default JRE”->完成->确定。->搞砸了

仅供参考。


0

就我而言,这是我向pom.xml文件中添加新依赖项的结果。

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

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

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.