2012-03-09 75 views
34

我正在開發Spring/Vaadin/Hibernate應用程序。Eclipse類型的層次結構...與@Configurable註釋不一致

一切正常,但我還是在Eclipse 2.8.1 STS以下錯誤標記:

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 !"); 
     } 
    } 
} 

是什麼原因造成這些錯誤標記?

+2

該錯誤消息通常是由於一個糟糕的類路徑。嘗試重建整個項目,通常會給出更有用的錯誤, – skaffman 2012-03-09 12:53:53

+0

首先,感謝您的答案;) 我已經試圖建立它,沒有任何改變。我嘗試了Project> Clean ...它沒有工作。在我的類路徑中,我試圖改變庫的順序,沒有任何改變:/ – c4k 2012-03-09 13:30:42

+0

[Eclipse編譯錯誤:'類名稱'類型的層次結構不一致]的可能重複(http://stackoverflow.com/questions/ 8520090/eclipse-compilation-error-the-hierarchy-of-the-type-class-name-is-inconsisten) – 2015-06-03 08:17:34

回答

1

事實上,問題是因爲我製作了AbstractListView @Configurable。當我把這個註解放在最後一個類(例如BankView)上時,所有錯誤都消失了。

謝謝大家的幫助。如果某人有同樣的錯誤,他們會在不同的答案中找到解決方案。

49

在我的情況下,我發現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中的問題視圖,說明欄對於實際問題比懸停更詳細。

+0

當tryint fitnesse教程時,我得到「類型GreetTheWorldFixture的層次結構不一致」,原來我是在我的項目classpath中缺少fitnesse.jar,感謝您的答案! – 2012-11-24 15:30:54

+0

該鏈接不起作用 – 2013-08-14 13:57:53

+1

@GáborLipták鏈接被刪除,IIRC它說明問題的原因相同 – Alex 2013-08-14 14:24:15

0

他們是你的maven依賴不被識別的可能性。查看您是否爲此特定項目啓用了Maven。 在Eclipse中,可以通過右鍵單擊該項目並選擇Maven - >啓用Maven依賴項來激活Maven。

1

重新配置構建路徑以解決問題。

0

在我的情況下,我使用了錯誤的JRE版本。

1

您是否試圖關閉並打開eclipse?有時它有幫助。我的eclipse(可能是因爲我在Windows平臺中)經常會顯示這樣的錯誤,唯一的解決方法是退出eclipse並稍後重新打開。

0

當我將actionbarsherlock添加到我的android項目並忘記從我的原始項目中刪除支持庫時,我遇到了這個問題。解決方案是從您的項目中刪除android-support-v4.jar並清理項目。它應該從actionbarsherlock文件夾加載庫。

1

另一個原因是對超類或超級接口的引用存在但位於不同的包中,並且既不是導入也不是完全限定的。

使用Eclipse重構來移動從嵌套接口繼承的抽象類後,發生了這種情況。移動之後,所有子類都有「類型X的層次結構不一致」消息。通過手動輸入已移動的抽象類來解決問題。

0

我知道這可能不是這裏的情況,但只是爲了更多的信息這個錯誤可以使用的接口一個層次的時候,有一些錯誤(如錯誤的仿製藥)引起您的層次結構中較高

0

當android支持庫不匹配發生時,也就是說當你使用兩個外部庫有兩個版本的支持庫時,這個錯誤也顯示出來,這個錯誤表明,(我做的是我通過刪除一個並將支持從其他第三方庫到這一個)

0

該錯誤說你缺少任何引用的JAR。

在我的情況下,我在創建Spring MVC項目時遇到了這個錯誤。我錯過了在構建路徑中添加相關的JAR文件(spring-context-4.1.0.RELEASE.jar & spring-web-4.1.0.RELEASE.jar)。

儘管已經添加了其他Spring JARs(Core,Beans,AOP & MVC),但上面提到的JAR文件也是必需的。一旦我添加了其他JAR,錯誤消失了。

1

我的問題是,類/罐子使用ant和gradle任務在Eclipse之外手動重新編譯。刷新所有項目並在eclipse中重建使錯誤消失。

0

我解決了這個錯誤類型的ServiceController的層次結構是不一致的通過問題消除所有的罐子Build PathReferenced Libraries並重新添加所有罐子在Eclipse IDE中。

0

我通過添加javax.servlet-api-3.0.1.jar解決了這個問題。我的開發工具是Eclipse,但是我的項目是在myeclipse下開發的,然後當我將項目導入eclipse時,它會拋出「SysUserFilter類型的層次結構不一致」,所以我認爲myeclipse會自動提供javax.servlet-api-3.0 .jar,但eclipse not.so它需要手動導入。

0

轉到實際檢查您的構建路徑(項目屬性=> Java Build Path => Libraries),該對話框可能會顯示缺少某些內容。這是我的問題,在項目工作的地方,但是一兩個月後它停止工作,因爲我的JRE設置改變了。