无晴岁月

忘却昨日的哀伤,天色已渐苍茫,踏上征途,继续寻觅着自己的天涯……

导航

<2005年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

常用链接

留言簿(1)

随笔分类(1)

随笔档案(1)

文章分类(4)

文章档案(4)

友情链接

搜索

最新评论

学习classpath、import、package

  classpath
  Window 2K/XP下的一个比较简便的方式是设置环境变量,控制面板-系统-"高级"选项卡-环境变量,在"系统变量"增加一项:"classpath",假设 jdk安装在c:\jdk,那么值为".;c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar"(其中不包含引号)。
  .;c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar是什么意思呢?
  分号;是路径分隔符,这里有三个路径,分别是".","c:\jdk\lib\dt.jar","c:\jdk\lib\tools.jar"。
  "."代表当前路径,假设类HelloWorld.class文件在c:\myjava下,我们运行它,c:\myjava>java HelloWorld,其实是JVM根据classpath在当前路径下寻找HelloWorld.class文件
   "c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar",这两个路径指向的是jdk\lib目录下的库文件dt.jar和 tools.jar,我将这两个文件解压,发现里面仅有javax和另外几个扩展内库文件,而java.lang、java.util、java.io这 些常用的库文件怎么没有包括进去呢?经过朋友点拨,这些常用的库文件是在jre\lib\rt.jar里,JVM在装载的时候就把它们装载进去了。我用的 是jdk1.4.2,以前的有些文章我就发现classpath包含了rt.jar文件,而现在却没有,我没用过以前的,所以从前的版本不太清楚。设置了 这两个路径后,在程序中才能够提取dt.jar和tools.jar中的扩展内库文件。
  import、package
   它是提取库文件的关键词,这个没有什么疑问。package是指定文件打包位置的关键词,我在某个程序中发现,不管package+路径与否都能. java当前的目录下生成.class文件,我感到很奇怪,因为和参考文章中的并不一样。于是我建立了两个文件做了下试验:
  c:\myjava\com\dezzalize下Hello.java文件:

  package com.dezzalize;

  public class Hello {

   public static int i=1;

  }

  c:\myjava下Helloaaa.java文件:

  import com.dezzalize;

  public class Helloaaa{

    public static void main(String[] args){

       System.out.println(Hello.i);

    }

  }

   Helloaaa访问Hello类中的类变量i,以此来测试package语句的作用。分别编译这两个文件,生成相应的.class文件,运行 Helloaaa.class,这个时候能正常运行。如果将Hello.java文件中的package语句屏蔽或者更改为一个不存在的路径,虽然 Hello.java能够编译,但Helloaaa.java不能编译了。
  于是我得出结论:import某个类文件的时候,被import的类文件的源文件中必须含有package语句并且是正确的路径。这就是package的作用!而参考文章中说package是在相应的目录下创建.class文件,个人认为是错误的。
  当然更多的时候我们希望的是Helloaaa.java并不是在固定的目录下面,只要我们添加一项classpath的值指向c:\myjava,以后就可以在硬盘中的其它地方也能import我们自己编写的类了。

posted on 2005-05-05 16:29 Dezzalize 阅读(776) 评论(0)  编辑  收藏 所属分类: J2SE


只有注册用户登录后才能发表评论。


网站导航: