如何在包中执行java程序

时间:2014-07-26 08:06:47

标签: java

我有一个目录E:\test\access ... 在E:\test我创建了一个文件Coffee.java,其中包含:

package test;
public class Coffee
{
    protected void service(){
        System.out.println("i am service in coffee");
    }
    public static void main(String[] args){
    }
}
class Cafe
{
    public static void main(String[] args){
        Coffee c=new Coffee();
        c.service();
    }
}

我执行了以下命令:

E:\test> javac Coffee.java                     
E:\test> java test.Cafe

它有效。接下来,我进入E:\test\access目录并创建了以下文件Coffee1.java

package access;
import test.Coffee;
public class Coffee1 extends Coffee
{
    public static void main(String[] args){
        Coffee c=new Coffee();
        c.service();
        Coffee1 c1=new Coffee1();
        c1.service();
    }
}

我进口并延长了咖啡吧?那么为什么我不能创建该类的对象呢? 我后来评论了那些东西并尝试编译并执行程序

2:我跑了

E:\test\access> javac Coffee1.java

并编译。

如果我这样做:

E:\test\access> java access.Coffee1

它给我一个错误,说它无法找到主要方法。

同样适用于测试文件夹中的Coffee.java。为什么不在这里工作?

我无法了解这个包的工作原理以及受保护的东西如何适用于其他包中的子类。请详细解释。

2 个答案:

答案 0 :(得分:0)

Java希望您的目录结构能够镜像您的包结构。如果您的Coffee1课程位于test\access,则应该在test.access个包中,您应该从根javac执行javaE:\在这种情况下),像这样:

E:\> javac test\access\Coffee1.java

答案 1 :(得分:-1)

您可以执行包文件To learn about packages you should see this tutorial. precise explanation to all your questions

javac -d . UrJavaFilename.java

并运行

java packageName.className

如果您要导入其他类,那么您可以使用: - 您应该定义导入的内容并提供类路径

Javac -cp e:\Yourdir; -d . UrJavaFilename.java