[英]“constructor has private access” error message
我在Java工作,遇到了一個非常奇怪的錯誤。 我有一個非常基本的課程如下:
public class ClassA{
private static Logger log = Logger.getLogger(ClassA.class.getName());
private boolean trace;
public ClassA(){
trace = log.isTraceEnabled();
}
public void doSomething(){
//does stuff
}
}
我可以在我當前的項目中使用這個類。 但是,當我構建,打包和安裝到我的本地倉庫(使用Maven,沒有設置遠程工件倉庫)時,其他項目無法正確使用此類,因為它們無法實例化它。 當我嘗試以下任何事情時:
ClassA classA = new ClassA();
我收到以下編譯錯誤:
ClassA() has private access in [package].ClassA
我已經在我的本地倉庫中反編譯了.jar以確保構造函數存在且是公共的 - 它是。 我還使用-U標志強制更新,編譯繼續失敗。 可能導致此錯誤的原因是什么?
也許你在類路徑中的某個地方有一些其他的ClassA.class文件。 檢查項目使用的所有無法調用構造函數的jar:其中一個應該包含類的舊版本。
我唯一的想法是你的包裹有問題。 確保使用package關鍵字在classA的源文件頂部定義包。 當您調用它時,請確保該文件位於include列表中,並帶有include關鍵字。 您可能遇到錯誤,因為ClassA存在於某個默認包中,而這正是您實際調用的,而不是調用本地創建的ClassA類。 您發布的代碼看起來很好,您已經仔細檢查過以確保更改已在您的存儲庫中生效。
//對於那些使用Kotlin-Java混合項目的人:
如果所述文件(使用構造函數)位於Kotlin中並且正在Java中使用:
而不是A a = new A(); //導致上述錯誤
使用A.INSTANCE。 ...
我有這個錯誤,寫“私有”,而不是“公共”的類構造函數;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.