36

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

是什么导致了这些错误标记?

4

14 回答 14

50

就我而言,我发现The hierarchy of the type ... is inconsistentEclipse 中的错误是由一个 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 列比悬停更详细地说明实际问题是什么。

于 2012-08-20T17:39:39.470 回答
1

您是否尝试关闭和打开 Eclipse?有时它会有所帮助。我的eclipse(可能是因为我在windows平台上)经常出现这样的错误,唯一的解决办法就是退出eclipse再重新打开。

于 2013-11-08T17:36:28.897 回答
1

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

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

于 2013-11-09T00:11:57.260 回答
1

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

于 2013-08-14T13:06:05.810 回答
1

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

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

于 2014-01-24T19:39:25.697 回答
1

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

于 2015-08-13T14:35:21.813 回答
0

他们有可能无法识别您的 Maven 依赖项。看看你是否为这个特定的项目启用了 Maven。在 Eclipse 中,可以通过右键单击项目并选择 Maven -> 启用 Maven 依赖项来激活 Maven。

于 2013-07-10T12:51:26.760 回答
0

我知道这可能不是这里的情况,但只是为了提供更多信息,在使用接口层次结构时可能会导致此错误,并且在层次结构的更高位置存在一些错误(例如错误的泛型)

于 2015-01-14T16:43:26.030 回答
0

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

于 2013-10-22T18:50:28.717 回答
0

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

于 2013-11-15T17:06:21.357 回答
0

当发生 android-support 库不匹配时也会出现此错误,即当您使用的两个外部库具有两个版本的支持库时,此错误显示,(我所做的是我通过删除一个并从其他库复制支持使它们成为相同的版本第三方库到这个)

于 2015-04-27T06:11:51.077 回答
0

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

于 2017-09-11T16:37:57.013 回答
0

我解决了这个错误ServiceController 类型的层次结构不一致的问题,方法是删除所有jars在 eclipse IDE中重新添加所有 jars。Referenced LibrariesBuild Path

于 2016-03-16T10:54:30.400 回答
0

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

于 2016-05-18T02:42:11.537 回答