在java中使用包内的main类



我正试图运行Demo.java文件,该文件正在同一个包中调用Protection类,但它出现错误这是主课。

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();
}
}

这就是我想在主类中使用的类。

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

你可以试试这个:

  1. 在p1中打开cmd,使用javac .Demo.java .Protection.java;然后您可以看到生成的两个.class文件
  2. 使用cd ..,然后您可以看到您的包p1
  3. 使用java p1.Demo,则可以看到预期的输出

相关内容

  • 没有找到相关文章

最新更新