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 Pathjars 的所有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注解不一致的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以从 Eclipse 的层次结构视图中隐藏测试类?

在 Eclipse 中显示 JSF EL 调用层次结构

了解eclipse maven依赖层次结构

调用层次结构和查找引用eclipse有什么区别?

Scala 类型层次结构

层次结构与许多表