Eclipse 类型...的层次结构与@Configurable注解不一致
Posted
技术标签:
【中文标题】Eclipse 类型...的层次结构与@Configurable注解不一致【英文标题】:Eclipse The hierarchy of the type ... is inconsistent with @Configurable annotation 【发布时间】:2012-03-26 20:21:50 【问题描述】:我正在开发一个 Spring/Vaadin/Hibernate 应用程序。
一切正常,但我在 Eclipse STS 2.8.1 中仍然有以下错误标记:
The hierarchy of the type BankView is inconsistent
The hierarchy of the type AbstractEntityView is inconsistent
我的观点有以下结构:
public class BankView extends AbstractEntityView
@Resource private BankService bankService;
public void buildLayout()
super.buildLayout();
// Use of the service here
public abstract class AbstractEntityView extends AbstractView
public void buildLayout()
verticalLayout = new VerticalLayout();
verticalLayout.setSpacing(true);
verticalLayout.setSizeFull();
setContent(verticalLayout);
super.buildLayout();
@Configurable(preConstruction = true)
public abstract class AbstractView extends com.vaadin.ui.VerticalLayout
public AbstractView()
super();
try
buildLayout();
catch (AccessDeniedException e) // Spring Security
System.out.println("GTFO !");
是什么导致了这些错误标记?
【问题讨论】:
该错误消息通常是由于错误的类路径。尝试重建整个项目,这通常会产生更有用的错误, 首先,感谢您的回答;)我已经尝试构建它,没有任何改变。我尝试了 Project > Clean... 它没有用。在我的类路径中,我尝试更改库的顺序,没有任何改变:/ Eclipse compilation error: The hierarchy of the type 'Class name' is inconsistent 的可能重复项 【参考方案1】:在我的例子中,我发现 Eclipse 中的 The hierarchy of the type ... is inconsistent
错误是由一个 jar 文件类引起的,我从该 jar 文件类中扩展了我的类,该类引用了一个不在构建路径中的类。
如果你有:
// in other.dep.jar
class FromOtherDepJar
// in dep.jar
class FromDepJar extends FromOtherDepJar
// in the current project
class ProblematicClass extends FromDepJar
如果dep.jar
在项目的类路径中,但other.dep.jar
不在,Eclipse 将显示The hierarchy of the type ... is inconsistent
错误。
看看 Eclipse 中的问题视图,描述列比悬停更详细地说明实际问题是什么。
【讨论】:
我在尝试使用 Fitnesse 教程时收到“GreetTheWorldFixture 类型的层次结构不一致”,结果发现我的项目类路径中缺少 Fitnesse.jar,感谢您的回答! @GáborLipták 链接已删除,IIRC 说明了问题的相同原因【参考方案2】:它们有可能无法识别您的 Maven 依赖项。看看你是否为这个特定的项目启用了 Maven。 在 Eclipse 中,可以通过右键单击项目并选择来激活 Maven Maven -> 启用 Maven 依赖项。
【讨论】:
【参考方案3】:重新配置构建路径以解决问题。
【讨论】:
【参考方案4】:就我而言,我使用了错误的 JRE 版本。
【讨论】:
【参考方案5】:您是否尝试关闭和打开 Eclipse?有时它会有所帮助。我的eclipse(可能是因为我是windows平台)经常出现这样的错误,唯一的解决办法就是退出eclipse再重新打开。
【讨论】:
【参考方案6】:实际上问题是因为我将 AbstractListView @Configurable。当我把这个注解放在最后一个类上时(例如BankView),所有的错误都消失了。
感谢大家的帮助。如果有人有同样的错误,他们会在不同的答案中找到解决方案。
【讨论】:
您是否在 AbstractListView 类上保留了 @Configurable ?【参考方案7】:当我将 actionbarsherlock 添加到我的 android 项目并忘记从我的原始项目中删除支持库时,我遇到了这个问题。解决方案是从您的项目中删除 android-support-v4.jar 并清理项目。它应该从 actionbarsherlock 文件夹中加载库。
【讨论】:
【参考方案8】:另一个原因是对存在的超类或超接口的引用,但在不同的包中,既不是导入的也不是完全限定的。
在使用 Eclipse 重构来移动从嵌套接口继承的抽象类后,我想到了这一点。移动后,所有子类都有“类型 X 的层次结构不一致”的消息。通过手动导入已移动的抽象类解决了该问题。
【讨论】:
【参考方案9】:我知道这里可能不是这种情况,但只是为了提供更多信息,在使用接口层次结构时可能会导致此错误,并且在层次结构的更高位置存在一些错误(例如错误的泛型)
【讨论】:
【参考方案10】:当发生 android-support 库不匹配时也会出现此错误,即当您使用的两个外部库具有两个版本的支持库时,此错误显示,(我所做的是通过删除一个并复制其他第三方库对此的支持)
【讨论】:
【参考方案11】:我的问题是类/jar 是在 Eclipse 之外使用 ant 和 gradle 任务手动重新编译的。刷新所有项目并在eclipse中重建使错误消失。
【讨论】:
【参考方案12】:我通过删除 Build Path
中jars 的所有Referenced Libraries
解决了这个错误ServiceController 类型的层次结构不一致 问题在eclipse IDE中重新添加所有jar。
【讨论】:
【参考方案13】:我通过添加 javax.servlet-api-3.0.1.jar 解决了这个问题。我的开发工具是 Eclipse,但是我的项目是在 myeclipse 下开发的,然后当我将项目导入 eclipse 时,它会抛出“SysUserFilter 类型的层次结构不一致”,所以我认为 myeclipse 自动提供了 javax.servlet-api-3.0 .1.jar,但eclipse没有。所以需要手动导入。
【讨论】:
【参考方案14】:去实际检查您的构建路径(项目属性 => Java 构建路径 => 库),对话框可能会告诉您缺少某些内容。这是我的问题,该项目正在运行,但一两个月后它停止运行,因为我的 JRE 设置发生了变化。
【讨论】:
以上是关于Eclipse 类型...的层次结构与@Configurable注解不一致的主要内容,如果未能解决你的问题,请参考以下文章