﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-无晴岁月</title><link>http://www.blogjava.net/dezz/</link><description>忘却昨日的哀伤，天色已渐苍茫，踏上征途，继续寻觅着自己的天涯……</description><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 00:57:13 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 00:57:13 GMT</pubDate><ttl>60</ttl><item><title>学习classpath、import、package</title><link>http://www.blogjava.net/dezz/archive/2005/05/05/4037.html</link><dc:creator>Dezzalize</dc:creator><author>Dezzalize</author><pubDate>Thu, 05 May 2005 08:29:00 GMT</pubDate><guid>http://www.blogjava.net/dezz/archive/2005/05/05/4037.html</guid><wfw:comment>http://www.blogjava.net/dezz/comments/4037.html</wfw:comment><comments>http://www.blogjava.net/dezz/archive/2005/05/05/4037.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dezz/comments/commentRss/4037.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dezz/services/trackbacks/4037.html</trackback:ping><description><![CDATA[<font size="2"><strong>　　classpath<br></strong>　　Window
2K/XP下的一个比较简便的方式是设置环境变量，控制面板-系统-"高级"选项卡-环境变量，在"系统变量"增加一项："classpath"，假设
jdk安装在c:\jdk，那么值为".;c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar"(其中不包含引号)。<br>
　　.;c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar是什么意思呢？<br>
　　分号;是路径分隔符，这里有三个路径，分别是"."，"c:\jdk\lib\dt.jar"，"c:\jdk\lib\tools.jar"。<br>
　　"."代表当前路径，假设类HelloWorld.class文件在c:\myjava下，我们运行它，c:\myjava&gt;java HelloWorld，其实是JVM根据classpath在当前路径下寻找HelloWorld.class文件<br>
　
　"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中的扩展内库文件。<br>
　　<strong>import、package</strong><br>
　
　它是提取库文件的关键词，这个没有什么疑问。package是指定文件打包位置的关键词，我在某个程序中发现，不管package+路径与否都能.
java当前的目录下生成.class文件，我感到很奇怪，因为和参考文章中的并不一样。于是我建立了两个文件做了下试验：<br>
　　c:\myjava\com\dezzalize下Hello.java文件： </font>
<p><font size="2">　　package com.dezzalize;</font></p>
<p><font size="2">　　public class Hello {</font></p>
<p><font size="2">　　　public static int i=1; </font></p>
<p><font size="2">　　}</font></p>
<p><font size="2">　　c:\myjava下Helloaaa.java文件：</font></p>
<p><font size="2">　　import com.dezzalize;</font></p>
<p><font size="2">　　public class Helloaaa{</font></p>
<p><font size="2">　　　　public static void main(String[] args){</font></p>
<p><font size="2">　　　　　　　System.out.println(Hello.i);</font></p>
<p><font size="2">　　　　}</font></p>
<p><font size="2">　　}</font></p>
<p><font size="2">　
　Helloaaa访问Hello类中的类变量i，以此来测试package语句的作用。分别编译这两个文件，生成相应的.class文件，运行
Helloaaa.class，这个时候能正常运行。如果将Hello.java文件中的package语句屏蔽或者更改为一个不存在的路径，虽然
Hello.java能够编译，但Helloaaa.java不能编译了。<br>
　　于是我得出结论：import某个类文件的时候，被import的类文件的源文件中必须含有package语句并且是正确的路径。这就是package的作用！而参考文章中说package是在相应的目录下创建.class文件，个人认为是错误的。<br>
　　当然更多的时候我们希望的是Helloaaa.java并不是在固定的目录下面，只要我们添加一项classpath的值指向c:\myjava，以后就可以在硬盘中的其它地方也能import我们自己编写的类了。</font></p>
<img src ="http://www.blogjava.net/dezz/aggbug/4037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dezz/" target="_blank">Dezzalize</a> 2005-05-05 16:29 <a href="http://www.blogjava.net/dezz/archive/2005/05/05/4037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>