关于命令提示符下编译和运行Java文件的小东西

    在E盘下新建一个文件夹a,a下有两个文件夹b和c。目录结构为:

            a---

                    --b

                    --c

         在b目录下建立java文件B.java,其代码如下:

package b;
import c.C;
public class B{
 public static void main(String args[]){
               Cc = new C();
               c.disp();
 
 }
}

    在c目录下,新建java文件C.java,其代码如下:

package c;
public class C{
 public void disp(){
               System.out.println("hello~");
 }
}

    现在如果我们要在命令提示符下利用javac和java命令进行编译和运行:

首先,进入到a-->b目录下,输入javac B.java,会出现如下错误:

关于命令提示符下编译和运行Java文件的小东西_第1张图片

可以看到缺少关于C类的信息,会不会是因为C.java没有编译的原因呢?因为在B类中引用了C类的信息,所以我们先把C.java编译了,进入到a-->c目录,输入javac C.java,得到如下信息:

可见编译通过了,在返回到b目录下,重新输入javac B.java命令,得到:

关于命令提示符下编译和运行Java文件的小东西_第2张图片

还是不可以,现在想一下,由于我们是在b目录下进行执行的javac命令,而b目录下是没有关于C类的信息的,我们应该返回到B类的上层目录进行编译才对,所以进入a目录下,重新执行命令,得到:

还是有错误,这是因为javac命令不识别这样的带有包标注的b.B.java参数,我们改变方式:

可见,这回是编译通过了,点号表示当前目录,加上b目录,就可以定位到B.java了,而且可以自动关联到C类,捎带着把C先编译了。

现在运行一下,依然在a目录下,输入java .\b\B 得到:

关于命令提示符下编译和运行Java文件的小东西_第3张图片

现在又找不到类了,看来是输入的有问题,无法定位到B类。现在改变输入方式,去掉.\b,因为这个时候需要带着B的包名才可以,记得此时B类已经编译结束了,所有的信息都在B的class文件中了,输入javab.B,得到:

这回成功了!

可见,在javac命令执行的时候,需要到类的父目录去运行,同样,java命令也是必须到类的根目录去运行,这样才能把其他引用到的或者相关的类包含进来,在运行java命令的时候还要注意不要忘记类的包名~

写完收工,饭去~

 

 

 

你可能感兴趣的:(关于命令提示符下编译和运行Java文件的小东西)