Java中带包(创设及引用)的类的编译与调试

Java中带包(创建及引用)的类的编译与调试

被java  手动 编译 运行 时 带包  搞糊涂过吗?现在,总结下:


第一步:要弄清-classpath /-cp  的作用


在javac / java  中的作用:加上这个参数,告诉编译器,指明要被引用的.class 文件或 .java 的位置,精确到目标文件,或目标文件夹(若有包机制)的上一层目录名



第二步:要弄清-d 的作用



在javac   中的作用: 若在java 文件中,有包机制,加上这个参数:-d+路径,会在该路径下,生成相应的包




第三点:


若在当前目录下,编译或运行,就可省略 -cp  参数。



第四点:

java 中默认修饰符为default,只可在同一个包下才能被访问引用,所以被引用的



第五点:

好,先面来实践下:


A.java
package p1;
public class A
{
     public int i;
     public void m()
     {}
}

B.java

package p2;
import p1.*;
public class B extends A
{
    public static void main(String[] args){
    B b=new B();
    System.out.println(b.i); 
    b.m();
    }
}
           



A.java  /B.java  所在的目录为:/home/luo/jdk/lab   




Java中带包(创设及引用)的类的编译与调试

Java中带包(创设及引用)的类的编译与调试
解释下:


我在lab目录下,找到A.java/B.java  并且在jdk目录下编译生成p1/p2.

那么加载A.class/B.class时,类加载器会在当前目录下先查找,这种情况下能找到。



下面的方法复杂点:


Java中带包(创设及引用)的类的编译与调试

Java中带包(创设及引用)的类的编译与调试
Java中带包(创设及引用)的类的编译与调试

Java中带包(创设及引用)的类的编译与调试
 

再解释下:

在编译A.java/B.java 时,pwd=/home/luo/jdk.

把p1.A 生成在  jdk/lab下,把p2.B  生成在  jdk下,


最后加载类时,我所处在的目录为 :/home/luo  


所以加载类时,得吧p1.A p2.B  的路径显示化指明,两个路径间用 ":" 相连,再再指明要运行的类名,即含有main()函数的类。