繁体   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