在 java 中的包内使用 main class
Using main class inside the package in java
我正在尝试 运行 文件 Demo.java,它在同一个包中调用保护 class,但它给出了错误
这是主要的class.
package p1;
// Instantiate the various classes in p1.
class Demo {
public static void main(String args[]) {
Protection ob1 = new Protection();
//Derived ob2 = new Derived();
//SamePackage ob3 = new SamePackage();
}
}
这是我想在主要 class 中使用的 class。
package p1;
public class Protection {
public int n = 1;
private int n_pri = 2;
protected int n_pro = 3;
public int n_pub = 4;
public Protection() {
System.out.println("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);
}
}
出现此错误:
$ javac Demo.java
Demo.java:6: error: cannot find symbol
Protection ob1 = new Protection();
^
symbol: class Protection
location: class Demo
Demo.java:6: error: cannot find symbol
Protection ob1 = new Protection();
^
symbol: class Protection
location: class Demo
2 errors
error: compilation failed
您应该使用 javac
,而不仅仅是 java
当你使用命令java
时,你可以执行一个文件,但只能执行那个文件中的类。这里有几个文件,所以你应该编译它们才能使用它们。
执行以下操作:
$ mkdir p1
$ mv Demo.java Protection.java p1/
# edit p1/Demo.java to change `class Demo` to `public class Demo`
$ javac p1/*
$ java p1.Demo
这有效并产生了以下结果:
base constructor
n = 1
n_pri = 2
n_pro = 3
n_pub = 4
你可以试试这个:
- 在p1打开cmd,使用
javac .\Demo.java .\Protection.java
;然后你可以看到生成了两个 .class 文件
- 使用
cd ..
,然后就可以看到你的包了p1
- 使用
java p1.Demo
然后你可以看到预期的输出
我正在尝试 运行 文件 Demo.java,它在同一个包中调用保护 class,但它给出了错误 这是主要的class.
package p1;
// Instantiate the various classes in p1.
class Demo {
public static void main(String args[]) {
Protection ob1 = new Protection();
//Derived ob2 = new Derived();
//SamePackage ob3 = new SamePackage();
}
}
这是我想在主要 class 中使用的 class。
package p1;
public class Protection {
public int n = 1;
private int n_pri = 2;
protected int n_pro = 3;
public int n_pub = 4;
public Protection() {
System.out.println("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);
}
}
出现此错误:
$ javac Demo.java
Demo.java:6: error: cannot find symbol
Protection ob1 = new Protection();
^
symbol: class Protection
location: class Demo
Demo.java:6: error: cannot find symbol
Protection ob1 = new Protection();
^
symbol: class Protection
location: class Demo
2 errors
error: compilation failed
您应该使用 javac
,而不仅仅是 java
当你使用命令java
时,你可以执行一个文件,但只能执行那个文件中的类。这里有几个文件,所以你应该编译它们才能使用它们。
执行以下操作:
$ mkdir p1
$ mv Demo.java Protection.java p1/
# edit p1/Demo.java to change `class Demo` to `public class Demo`
$ javac p1/*
$ java p1.Demo
这有效并产生了以下结果:
base constructor
n = 1
n_pri = 2
n_pro = 3
n_pub = 4
你可以试试这个:
- 在p1打开cmd,使用
javac .\Demo.java .\Protection.java
;然后你可以看到生成了两个 .class 文件 - 使用
cd ..
,然后就可以看到你的包了p1
- 使用
java p1.Demo
然后你可以看到预期的输出