【问题标题】:Access Specifier Error(Cannot find Symbol)访问说明符错误(找不到符号)
【发布时间】:2014-12-16 16:06:57
【问题描述】:
C:\Users\jaina_000\Desktop\learn_java\p1>javac Testp1.java Testp1.java:6:错误:找不到符号 保护 ob = new Protection(); ^ 符号:保护等级 位置:类Testp1 Testp1.java:6:错误:找不到符号 保护 ob = new Protection(); ^ 符号:保护等级 位置:类Testp1 Testp1.java:7:错误:找不到符号 派生 ob1 = new Derived(); ^ 符号:派生类 位置:类Testp1 Testp1.java:7:错误:找不到符号 派生 ob1 = new Derived(); ^ 符号:派生类 位置:类Testp1 Testp1.java:8:错误:找不到符号 SamePackage ob2 = 新的 SamePackage(); ^ 符号:类 SamePackage 位置:类Testp1 Testp1.java:8:错误:找不到符号 SamePackage ob2 = 新的 SamePackage(); ^ 符号:类 SamePackage 位置:类Testp1 6 个错误
package p1;
public class Testp1
    {
    public static void main(String a[])
        {
        Protection ob = new Protection();
        Derived ob1 = new Derived();
        SamePackage ob2 = new SamePackage();
        }
    }


package p1;

public class Protection
    {

    int n = 1;
    private int n_pri = 2;
    protected int n_pro = 3;
    public int n_pub = 4;

    public Protection()
        {
        System.out.println("Inside base constructor.");
        System.out.println(" n = "+n);
        System.out.println("n_pri = "+n_pri);
        System.out.println("n_pro = "+n_pro);
        System.out.println("n_pub = "+n_pub);
        }
    }


package p1;

class Derived extends Protection
    {
    Derived()
        {
        System.out.println("Inside Derived constructor.");
        System.out.println(" n = "+n);
    //  System.out.println("n_pri = "+n_pri);       
        System.out.println("n_pro = "+n_pro);
        System.out.println("n_pub = "+n_pub);
        }
    }


package p1;

class SamePackage{

    SamePackage(){
        Protection p = new Protection();
        System.out.println("Inside SamePackage constructor.");
        System.out.println(" n = "+p.n);                
    //  System.out.println("n_pri = "+p.n_pri);     
        System.out.println("n_pro = "+p.n_pro);
        System.out.println("n_pub = "+p.n_pub);
    }
}

【问题讨论】:

  • 我已将这 4 个文件保存在一个名为 p1 的包中。第一个代码保存在 Testp1.java 中,第二个代码保存在 Protection.java 中,第三个保存在 Derived.java 中,第四个保存在 SamePackage.java 中
  • 请提供堆栈跟踪?
  • 你有什么问题?
  • @AniketThakur 一切似乎都在同一个包中......
  • 我都执行了也没问题,是什么问题???

标签: java access-specifier


【解决方案1】:

当你有包时,你不能像在没有包的类中那样简单地编译或运行。

当你编译时,你需要导航到你的包文件夹之外,然后使用命令 javac [package]/[class] 编译。所以在你的情况下它应该是

javac p1/Testp1.java

并且在运行时使用此命令java[package.class]..so 在您的情况下应该是

java p1.Testp1

确保您不在包 [p1] 内,您应该在包外 [通过 cmd 导航到文件夹 learn_java 后编译]。

这就是你的 cmd 的样子

C:\Users\jaina_000\Desktop\learn_java>javac p1/Testp1.java C:\Users\jaina_000\Desktop\learn_java>java p1.Testp1 基本构造函数内部。 n = 1 n_pri = 2 n_pro = 3 n_pub = 4 基本构造函数内部。 n = 1 n_pri = 2 n_pro = 3 n_pub = 4 内部派生构造函数。 n = 1 n_pro = 3 n_pub = 4 基本构造函数内部。 n = 1 n_pri = 2 n_pro = 3 n_pub = 4 在 SamePackage 构造函数内部。 n = 1 n_pro = 3 n_pub = 4 C:\Users\jaina_000\Desktop\learn_java>

【讨论】:

    猜你喜欢
    • 2023-02-13
    • 2011-01-31
    • 2014-01-11
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多