Eclipse错误:从所需的.class文件间接引用?
我在Eclipse中遇到了一个错误。 这个错误信息是什么意思:
The type iglu.ir.TermVector cannot be resolved. It is indirectly referenced from required .class files
这意味着:“您使用的类需要另一个不在类path上的类”。 您应该确保(如Harry Joy所build议的)将所需的jar添加到classpath中。
这很可能是Eclipse的困惑,因为这是一个实际的错误。 我忽略了这个错误,运行了它所抱怨的endpointInterface的web服务,运行的很好,除了每次运行它时都必须处理对话框。 另一个不透明的错误告诉我什么都没有。
它有时发生在我身上,我总是用“mvn eclipse:clean”命令修复它,以清理旧的属性,然后运行mvn eclipse:eclipse -Dwtpversion = 2.0(当然是用于web项目)。 有一些旧的属性保存,所以日食有时候是困惑的。
当jar文件中的类不遵循与jar的文件夹结构相同的结构时,会发生此错误。
例如,如果你的类文件中包含了com.test.exam,并且这个类文件中创build的classes.jar具有结构test.exam …则会抛出错误。 您需要更正您的classes.jar的包结构,然后将其包含在ecplipse构buildpath中。
这听起来像是一个已知的问题(错误67414)已经在3.0中解决了…有人评论说,它也在3.4中发生了。
与此同时,解决方法是从项目中删除JRE系统库,然后再将其添加回来。
Here are the steps:
转到具有构build错误的项目的属性(右键单击>属性)
查看“构buildpath”部分中的“库”选项卡
在列表中find“JRE System Library”(如果缺less这个错误消息,那么这个错误消息不是eclipse的错误,而是一个错误configuration的项目)
删除“JRE系统库”
点击“Add Library …”,select“JRE System Library”并为项目添加合适的JRE(例如“工作区默认JRE”)
点击库选项中的“完成”和项目属性中的“确定”,然后等待项目的重新构build
希望错误将被解决…
如果您仍然无法find您的设置有任何问题,您可以尝试项目 – >清理和清理工作区中的所有项目。
编辑:对不起,没有看到verbose_mode的build议…相同的事情
我得到这个exception,因为eclipse是在不同版本的JDK中工作,只是改变了正确的,干净的,build设和工作!
对我来说,当我将我的旧版JAR升级到1.8.0_60时,会发生这种情况。 如果我回到jdk1.7.0_25,所有这些问题都没有了。 这似乎是关于JRE和库之间兼容性的一个问题。
我有这个错误,因为本地的Maven仓库损坏 。
所以,为了解决这个问题,我所要做的就是在我的仓库中删除相关的.jar文件夹,然后在Eclipse中强制update maven
。
我得到了错误,当我只是改变一些svn设置,而不是在代码中的任何东西。 只是清理项目修复了错误。
在我的情况下,我创build了一个项目,并使其minSdkVersion=9
和targetSdkVersion=17
。 我用自动生成的libs/android-support-v4.jar
。 我还必须使用android-support-v7-appcomapt.jar
来使用ActionBarActivity
。 所以我刚从android-sdk/extras/andrid/support/v7/appcompat/libs
文件夹复制了android-support-v7-appcompat.jar
文件,并将其粘贴到我的项目libs
文件夹中。 这导致了上述错误。 所以基本上,我需要把android-support-v4.jar
文件从android-sdk/extras/andrid/support/v7/appcompat/libs
以及我的项目libs
文件夹。 据我所知, v7.jar
文件对v7.jar
文件有依赖关系。 所以,它需要它自己的v4.jar
文件,而不是我的项目,自动创buildv4.jar
文件。
快速,简单地我这样修复它(我在Windows XP家庭版上使用ADT版本:v21.0.0-531062)
- 打开清单文件。
- 将现有项目minSdkVersion更改为与maxSdkVersion相同的值(build议:创build一个New项目并查看它是什么maxSdkVersion)
- 保存清单文件。
- 右键单击该项目,然后select生成项目。
- 从顶部菜单:项目 – 清理.. – 检查只有相关的项目,下面我检查立即启动一个构build和build立只有选定的项目,并确定。
- 打开java文件 – 没有红色的错误了!
- 回到上面的步骤1,并将minSdkVersion更改为原始值(尽可能多地安装Android版本)。
它的工作,但问题每隔几天返回。 我也是这样做的,它解决了,让我发展。
除了已经build议丢失一个类文件的原因之外,这个错误还可以指示重复的类文件,当构buildpath上的类文件使用在构buildpath中具有多个定义的另一个类时,eclipse报告这个错误。
既然你给了我们很less的细节,很可能你做了什么,这是一个非常容易犯的错误,而不是前往
Build Path > Configure Build Path > Projects
并从那里添加你的额外的项目文件夹,而你去了
Build Path > Configure Build Path > Libraries
并从那里添加您的项目文件夹。
如果你的代码都是正确的,那么这是最明显的情况,但是通过ctrl+space
快捷键自动重组导入,而不是引用com.your.additionalproject的导入语句时,你的引用都指向bin.com.your.additionalproject 。
注意垃圾箱。 这意味着你是通过把你的其他项目文件夹结构视为一个库来间接地引用你的类,使你的IDE做所有的工作,find你所指的准确的二进制类。
要解决此问题,请从库中删除文件夹,并将其添加到“项目”选项卡下,然后重新组织导入。 你的项目应该工作正常。
当我使用新的eclipse版本,并尝试使用旧的eclipse版本使用的以前的工作区,这个错误发生。
这是我如何解决这个问题:
在Package Explorer – > Properties – > Java Build Path – > Libraries – >上右键单击我的项目。我在JRE System Library上看到一个错误(Cross Sign)。 因为path找不到。 – >双击JRE系统库 – >select选项“工作区默认JRE” – >完成 – >确定。 – >烧伤它正在工作
仅供参考。
这发生在我身上,因为我的jar子里有传递依赖关系
在我的情况下,这是我添加一个新的依赖项到我的pom.xml
文件的结果。
新的依赖依赖于旧版本的库(2.5)。 我的pom.xml
的另一个库需要相同的库,但它需要3.0版本。
出于某种原因,当Maven遇到这些冲突时,它会简单地省略最新的版本。 在Eclipse中查看pom.xml
,可以select底部的“依赖关系层次结构”选项卡,查看依赖关系是如何解决的。 在这里你会发现,如果因为这个原因,图书馆(和class级)被忽略。
就我而言,就像locking新版本一样简单。 您可以通过右键单击条目来执行此操作 – 可以在上下文菜单中将其locking。