免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2712 | 回复: 0
打印 上一主题 下一主题

说一下Java里面的路径问题,CLASSPATH和SOURCEPATH [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-28 15:47 |只看该作者 |倒序浏览
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文件,那么只需要包含途径就行了。
本文来自,转载请标明出处:文章由御泥坊官网整理,收集辛苦,希望能保留出处,谢谢斑竹大哥。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP