发新话题
打印

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

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

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\d1javac p1\Class1.java

编译成功

然后我们在 d:\temp\testCP\d2 下编译 Class2。有2个方法进行编译:
第一:指定源文件 sourcepath
D:\temp\testCP\d2javac -sourcepath .;../d1 p2\Class2.java

第二:指定classpath
D:\temp\testCP\d2javac -sourcepath . -cp ../d1 p2\Class2.java

两个方法都能到达我们需求的效果。也就是说,在途径里,零碎会在其上面依据package自动寻找源文件或许class文件的。

另一个状况,如果我们需求某个类库的支持,比如jar文件,那么我们就不能只包含途径就行了,而是应该包含整个途径和文件名,比如
D:\temp\testCP\d2javac -sourcepath . -cp ../d1;d:/lib/spring.jar p2\Class2.java

第二、在运转时
我们需求指定其他的class在哪里,以及我们需求的类库在哪里,所以运转命令应该是
D:\temp\testCP\d2java -cp .;../d1;d:/lib/spring.jar p2.Class2Class1

总结:
途径分为2种,如果是jar或许zip形式的,那么必须包含完整的途径和文件名,大小写都不能错。
如果是class文件,那么只需求包含途径就行了。
本文来自,转载请标明出处:文章由裂帛服饰官网整理,收集辛苦,希望能保留出处,谢谢斑竹大哥。
jiyizhen-buy.com颈椎保健枕太空记忆枕 igerl.com歌瑞尔内衣

TOP

发新话题