簡體   English   中英

“構造函數具有私有訪問權限”錯誤消息

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM