说一下Java里面的路径问题,CLASSPATH和SOURCEPATH

来源:互联网 发布:win10 tensorflow 编辑:程序博客网 时间:2024/05/17 22:59

java的路径让许多人,特别是初学者感到迷惑,我这里再解释一下。我们分2个阶段,1是编译阶段,2是运行阶段。

 


一、编译阶段

  这个时候,我们要提供给编译器的有2个路径参数,第一个是源代码在哪里?也就是 sourcepath,第二个就是依赖的类在哪里?也就是 classpath

 


我们看一个例子

 


d:/temp/TestCP/d1/p1/Class1.java

 


view plaincopy to clipboardprint?
package p1;  
public class Class1 {  
  public void show(){  
    System.out.println("Class1");  
  }  

package p1;
public class Class1 {
  public void show(){
    System.out.println("Class1");
  }
}

 

 

 

d:/temp/TestCP/d2/p2/Class2.java

view plaincopy to clipboardprint?
package p2;  
import p1.Class1;  
public class Class2 {  
  public static void main(String[] args){  
    Class1 c1 = new Class1();  
    c1.show();  
  }  

package p2;
import p1.Class1;
public class Class2 {
  public static void main(String[] args){
    Class1 c1 = new Class1();
    c1.show();
  }
}

 


编译的时候,我们先在 d:/temp/testCP/d1 编译Class1

D:/temp/testCP/d1>javac p1/Class1.java

 


编译成功

 


然后我们在 d:/temp/testCP/d2 下编译 Class2。有2个方法进行编译:

第一:指定源文件 sourcepath


D:/temp/testCP/d2>javac -sourcepath .;../d1 p2/Class2.java

 


第二:指定classpath

D:/temp/testCP/d2>javac -sourcepath . -cp ../d1 p2/Class2.java

 


两个方法都能达到我们需要的效果。也就是说,在路径里,系统会在其下面根据package自动寻找源文件或者class文件的。

 


另一个情况,如果我们需要某个类库的支持,比如jar文件,那么我们就不能只包含路径就行了,而是应该包含整个路径和文件名,比如

D:/temp/testCP/d2>javac -sourcepath . -cp ../d1;d:/lib/spring.jar p2/Class2.java

 


第二、在运行时

我们需要指定其他的class在哪里,以及我们需要的类库在哪里,所以运行命令应该是

 


D:/temp/testCP/d2>java -cp .;../d1;d:/lib/spring.jar p2.Class2
Class1

 

 

 


总结:

路径分为2种,如果是jar或者zip形式的,那么必须包含完整的路径和文件名,大小写都不能错。

如果是class文件,那么只需要包含路径就行了。

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/java2000_net/archive/2009/10/19/4696661.aspx

原创粉丝点击