我正在做一个库,我想有一个类Node,大多数时候它工作正常,但有时它会在我使用节点的每一个地方给出错误Node cannot be resolved to a type
。
奇怪的是,例如,如果我将类重命名为DNode,并将每个Node重命名为DNode,然后将所有内容再次更改为Node,它就像以前一样,但表示Node cannot be resolved to a type
的错误消失了(直到某个时间)。
编译也没有问题,这似乎是一个Eclipse的错误或什么。
我知道有这个Node class,但我没有导入它,所以我不明白为什么这会形成一个问题。
希望有人能帮上忙。
3条答案
按热度按时间cedebl8k1#
我以前见过类似的行为,知道两个可能的原因:
Project
菜单并选择Clean
来完成。这不是一个合适的解决方案,但我觉得比你的Node
-〉DNode
-〉Node
解决方案要快。xqkwcwgp2#
几年前,似乎有几个人描述了这个问题(以及解决方案)。例如,this描述了这个问题,并发现在Eclipse中执行Refresh修复了它。在他的案例中,他在Eclipse外部的Eclipse Project目录中创建了一个顶级文件夹,从而导致了这个问题。这听起来像是一个存在了几年的Eclipse bug。
hmmo2u0o3#
我在将项目升级到Java9或更高版本时遇到过这个问题。Java9引入了模块的概念,并且让多个模块“提供”一个包似乎是在Eclipse中导致此类错误消息的一个问题。错误消息
... cannot be resolved to a type
具有误导性,但我将其解释为... cannot be resolved to a *unique* type
,那么它就有意义了。现在要解决这个问题,你需要找出类路径上的哪些jar会导致哪些包重复,有一个简单的方法可以做到这一点:使用
jdeps
:例如,我使用了以下内容:
从上面可以看出,Java标准地提供了上述XML相关模块,因此从类路径中删除列出的jar就解决了问题。在其他一些情况下,您只需要添加“API”jar,而不需要添加“IMPL”jar。例如,添加
javax.servlet-api.jar
而不是j2ee.jar