2012-08-29 53 views
5

我有一個實現抽象類的類。抽象類在我的項目的另一個包中。通過配置構建路徑/項目添加了該類的抽象包。在實現的類中指責以下錯誤:類型層次結構不一致Classe類型的層次結構不一致

我是否需要將此包添加到其他位置?

謝謝!

+6

顯示一些代碼或東西。你的解釋不太一致。 – Erik

回答

4

這意味着您在超類中做出了不兼容的更改,但尚未重新編譯它。

我建議你使用像Maven或Ant這樣的構建系統和/或使用IDE來構建你的所有代碼。

+0

我下載了SVN版本並且項目已經在使用Ant了,我需要配置什麼東西給這個類是可見的嗎? – Deb

+1

你需要確保一切都重新編譯。我希望當你嘗試這樣做時,你會看到一個編譯錯誤,這將解釋你的問題。 –

+0

不怪任何東西。只會指責代碼本身:「BDIGenericGeneratorEvent類型的層次結構不一致」 – Deb

29

發生這些錯誤的原因是層次結構中的某些接口/類無法解析。 例如:錯誤在您的類中 - 類X,X繼承Y,繼而Y繼承Z.但是,編譯器無法解析z(在上述錯誤中),因爲z屬於不包含的庫。 因此,您必須將包含z的軟件包添加到classpath /或項目的Java Build Path(如果您使用的是eclipse)。希望它可以幫助。

+2

+1這個答案謝謝。我只是有這個錯誤,並想補充說:如果Z​​類是你自己的類,但是有一個語法錯誤,也會發生這種情況。所以Z類不能被編譯。在我的情況下,類Z不能被編譯,因爲它使用了Java 7方法,但我將環境降級到了Java 6. –

1

這意味着你實現的類引用了接口或類,該接口或類再次引用其他庫中的某些其他類或接口,並且這些接口或類不可用。

0
right click your project ,Properties- java build path- source- include all the cs file source(it may inherit the files) and sync. 

這對我而言正確。

+0

這個建議取決於使用的IDE。 @Deb可能不會使用與您相同的一個。 – zck

+0

是的,這也corect。 –

1

springframework.aop罐子取決於aopalliance.jar它添加到你的類路徑,它將解決烏爾problm希望工程因爲我面臨着我加入依賴的jar所以解決

0

我也有這個問題,相同的概率當試圖從另一個插件項目中使用某些類時。 我有類似myClass extends pp1Class - 這裏我有錯誤,pp1Class插件被添加爲依賴項。 pp1Class擴展了pp2Class - 這是pp1(plugin proj1)中的依賴項,但不在我的插件中。我所做的是去pp1和你已經定義到pp2的依賴關係,點擊屬性並檢查「重新導出這個依賴項」(這是在MANIFEST.MF中)。 這應該解決問題,它解決了我的問題。

0

此錯誤的另一個原因是,您的一個基類實現了一個外部庫中的接口,並且.classpath文件保存在源控制系統中(因此爲只讀)。

例如,您的ClassB擴展ClassA和ClassA實現了LibraryA.jar中的InterfaceA。 ClassA在ProjectA中,ClassB在ProjectB中。 ProjectA .classpath文件是隻讀的。

在這裏,您必須從ProjectA導出LibraryA.jar。但是我猜想由於Eclipse錯誤,當一個新的團隊夥伴連接這些項目(或偶爾在準備另一個工作區時),他會得到這種類型的層次結構錯誤。解決這個問題的唯一方法是在ProjectA中檢出.classpath文件,刪除並重新添加一個庫(不一定是LibraryA.jar)。這個操作以某種方式解決了錯誤。

4

轉到Project Explorer。

  1. 右鍵點擊你的項目
  2. 構建路徑
  3. 配置構建路徑
  4. 刪除JRE系統庫
  5. 單擊Add圖書館
  6. 添加JRE系統庫
  7. 點擊下一步,然後完成

錯誤將被解決。

+0

這對我有用,但是,我沒有刪除並添加'JRE System Library',因爲在我的情況下,問題出現在其他JAR庫中。我已經用'maven-eclipse-plugin'(2.10)創建了這個項目,並且刪除並添加了可疑庫,這在eclipse Luna中非常有用。 –

0

在Eclipse,OSGi環境中,可以將所需的軟件包添加到MANIFEST.MF-> Dependencies選項卡 - > Imported軟件包。這將解決問題。或者包含該類的插件可以添加到必需的插件中

1

我在我的RCP應用程序中遇到了這個問題。

原因:我沒有在Manifest文件的依賴部分添加核心插件org.eclipse.core.runtime。 當我添加這個依賴關係jar問題已解決。

謝謝, Sid