Eclipse类型的层次结构...与@Configurable注释不一致

时间:2012-03-09 11:14:20

标签: eclipse spring hierarchy vaadin configurable

我正在开发一个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 !");
        }
    }
}

导致这些错误标记的原因是什么?

14 个答案:

答案 0 :(得分:50)

就我而言,我发现Eclipse中的The hierarchy of the type ... is inconsistent错误是由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中的Problems View,Description列比实际问题更详细,而不是悬停。

答案 1 :(得分:1)

配置构建路径以解决问题。

答案 2 :(得分:1)

你试过关闭并打开日食吗?有时它有帮助。我的eclipse(可能是因为我在Windows平台上)经常显示这样的错误,唯一的解决方案是退出eclipse并稍后重新打开。

答案 3 :(得分:1)

实际上问题是因为我制作了AbstractListView @Configurable。当我将这个注释放在最后一个类(例如BankView)时,所有错误都消失了。

感谢大家的帮助。如果有人有同样的错误,他们会在不同的答案中找到解决方案。

答案 4 :(得分:1)

另一个原因是对存在的超类或超接口的引用,但它位于不同的包中,既不导入也不完全限定。

在使用Eclipse重构来移动从嵌套接口继承的抽象类之后,我发生了这种情况。移动后,所有子类都具有“X类型的层次结构不一致”消息。通过手动导入已移动的抽象类来解决问题。

答案 5 :(得分:1)

我的问题是使用ant和gradle任务在Eclipse之外手动重新编译类/ jar。刷新所有项目并在eclipse中重建使错误消失。

答案 6 :(得分:0)

他们的maven依赖是不可能被识别的。查看您是否为此特定项目启用了Maven。 在Eclipse中,可以通过右键单击项目并选择来激活Maven Maven - >启用Maven依赖项。

答案 7 :(得分:0)

就我而言,我使用的是错误的JRE版本。

答案 8 :(得分:0)

当我将actionbarsherlock添加到我的android项目并忘记从原始项目中删除support-library时,我遇到了这个问题。解决方法是从项目中删除android-support-v4.jar并清理项目..它应该从actionbarsherlock文件夹加载库。

答案 9 :(得分:0)

我知道这可能不是这种情况,但仅仅是为了附加信息,当使用接口层次结构时可能会导致此错误,并且在层次结构中某处有更高的错误(例如错误的泛型)

答案 10 :(得分:0)

当android支持库不匹配时,也会出现此错误,即当您使用的两个外部库有两个版本的支持库时,此错误显示,(我所做的是通过删除一个并复制从其他第三方图书馆支持这个)

答案 11 :(得分:0)

我解决了这个错误类型ServiceController的层次结构不一致问题是删除 {{1>}个 jars {{ 1}}并在eclipse IDE中重新添加所有jar。

答案 12 :(得分:0)

我通过添加javax.servlet-api-3.0.1.jar解决了这个问题。我的开发工具是Eclipse,但我的项目是在myeclipse下开发的,然后当我将项目导入eclipse时,它会抛出“SysUserFilter类型的层次结构不一致”,所以我认为myeclipse会自动提供javax.servlet-api-3.0 .1.jar,但eclipse not。所以需要手动导入。

答案 13 :(得分:0)

去实际检查您的构建路径(项目属性=> Java构建路径=>库),对话框可能会显示缺少某些内容。这是我的问题,项目正在运行,但在一两个月之后,由于我的JRE设置发生了变化,它停止了工作。