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