[英]Java Eclipse: class cannot be resolved to a type inheritance
我遇到了一個問題,當我在Eclipse中打開項目時,包中的類的可見性出現了問題。
例:
package.a
- public abstract class clazz
package.b
- public abstract class clazzy extends clazz
在上面的例子中,clazzy會出現錯誤,clazz將無法使用。 如果我將clazzy移動到package.a中,並將其移回package.b一切都很好,但除此之外,我無法讓eclipse認識到clazz存在。
編輯1:
是的,我正在導入課程。 我也按ctrl-shift-o(導入)。 如果我輸入導入,eclipse仍然無法識別clazz存在。 我沒有嘗試導入整個包,因為我通常會因各種原因避免這樣做。
編輯2:
當我第一次使用以下導入打開項目(它已經存在於工作區中)時:
import package.a.Clazz;
public abstract clazzy extends Clazz {
...
}
導入和clazz標識符都將用紅色下划線標出。
我收到了一些建議:
import package.a;
這不僅不能解決問題,而且我也不希望出於各種原因。
編輯3:
我應該澄清一下,當我在第2段中說“移動”時,我的意思是如果我將package.b.clazzy移動到另一個包(比如package.a或package.c),eclipse似乎意識到它是愚蠢的並且自己排序出。 如果我然后將clazzy移回package.b從那時起一切都很好。
此代碼從該點開始編譯並正確運行。
我通過添加此導入解決了這個問題:
import javax.persistence.InheritanceType;
希望它可以幫助某人:)
您的問題可能是命名問題... package
是Java中的關鍵字,不應該用於包,變量,類等的名稱。
將您的包重命名a
。 為此,您可以重新創建它或將內容移動到名為a
的新目錄中,並更改類頂部的包標識符以package a
。
像這樣導入包
import a.clazz;
不是包是java中的保留關鍵字
import package.a.clazz;
在代碼中添加導入以繼承該類
如果您不想導入package.a.clazz
(為什么不?),那么您需要通過其全名來引用它,
public abstract class clazzy extends package.a.clazz {
但我真的不知道你為什么要這樣做而不是
import package.a.clazz;
public abstract class clazzy extends clazz {
事實上,Eclipse中“移動”的原因是因為Eclipse在移動clazzy
到新包時會自動為您添加import
語句。
另外,請注意使用正確的情況。 在您的問題中,您使用了全部小寫,但在編輯中,您開始引用Clazz
而不是clazz
。 那些是不同的,只有第一個( Clazz
)遵循標准慣例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.