“Cannot be accessed from outside package“解决方法

背景:

代码迁移中,无访问权限修饰符修饰的method报错:

'getAllLogicTables()' is not public in 'io.shardingsphere.core.rule.BindingTableRule'. Cannot be accessed from outside packag

 原因:

对于无访问权限修饰符修饰的方法,只有在同一个报下的类可以访问。

 

解决方法:

 移动包路径后,与的io.shardingsphere.core.rule.BindingTableRule包名称相同即可解决。

涉及到jvm中“类编译”相关知识(极客时间解释:深入JVM即时编译器JIT,优化Java编译)

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"cannotbeaccessedfromoutsidepackage" 的意思是该代码无法从包外部访问。在Java中,如果一个类或者类中的成员被声明为"package-private",那么它们只能在同一个包内被访问,而不能被其他包中的代码访问。如果你想要在不同的包中访问该类或成员,可以将其声明为public。这个错误意味着你正在尝试访问一个位于不同包(package)中的类、方法或属性,而这个类、方法或属性没有被声明为公共(public)的。在 Java 中,默认情况下,如果你不在同一个包中,就无法访问不公共的类、方法或属性。 要解决这个问题,你可以将要访问的类、方法或属性声明为公共的(public),或者将使用它们的类与它们放在同一个包中。如果你不想将这些类、方法或属性声明为公共的,也可以使用 Java 的访问修饰符(access modifier)来控制对它们的访问权限。例如,可以将它们声明为受保护的(protected)或默认的(default),这样就只能在同一个包或子类中访问它们。 下面是一个示例代码,其中类A和类B位于不同的包中,且类A中的方法foo()是受保护的: ``` package com.example.package1; public class A { protected void foo() { System.out.println("foo"); } } ``` ``` package com.example.package2; import com.example.package1.A; public class B { public static void main(String[] args) { A a = new A(); a.foo(); // 编译错误:'foo()' 在 'com.example.package1.A' 中是受保护的 } } ``` 在这个示例中,由于方法foo()是受保护的,类B无法访问它。要解决这个问题,你可以将方法foo()声明为公共的,或者将类B放在与类A相同的包中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值