完fer的包机制

上传人:豆浆 文档编号:2777912 上传时间:2017-07-27 格式:DOCX 页数:5 大小:32.85KB
返回 下载 相关 举报
完fer的包机制_第1页
第1页 / 共5页
完fer的包机制_第2页
第2页 / 共5页
完fer的包机制_第3页
第3页 / 共5页
完fer的包机制_第4页
第4页 / 共5页
完fer的包机制_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《完fer的包机制》由会员分享,可在线阅读,更多相关《完fer的包机制(5页珍藏版)》请在金锄头文库上搜索。

1、完全掌握 java 中的包机制完全掌握 java 中的包机制包机制是 java 中特有的,也是 java 中最基础的知识。一些初学 java 的朋友,通常象学其它语言一样从教材上 copy 一些程序来运行,可是却常常遇到莫名其妙的错误提示。这些问和斌人提供的的原理不够清楚。本文将就此问题进行深入阐述。 还让他入的主要原因是 java 本身跨平台特性的需求。因为 java 中的所有的资源也是以文件方式组织,这二作系统平台对文件的管理都是以目录树的形式的组织,但是它们对目录的分隔表达方式 不同,为了区别于各种平台,java 中采用了.来分隔目录。 二、java 中包结构和平台的衔接 java 中的

2、资源存在于不同平台如风很大差异。因此跨平台的 java 包结构和平台之间必须通过一种方式来衔接到一起。事实热过我们很熟悉的classpath 的设置来衔接到一起的。举个例子: 我在 Windows2000 环境下的 classpath 设置如下: classpath = d:jdk1.4.2libdt.jar; d:cjm类的衔接关系可以用下图来表达: 从图中可以看出,java 中的类的组织是悬空的,这样的话,它们可以随意放在任意平台下,但是要在该平台下正确找到一个类,则必须使用 classpath 来设置类所在目录的前面一部分(即区别于平台的部分)。在 java中常常把一棵类树压缩成一个.j

3、ar 文件,如图中的 rt.jar,这 并不影响对类的查找,在指定环境变量时可以指定.jar 文件所在目录,也可以具体指明.jar的完全查找路径,即上例中的 classpath 中也可描述 成:classpath = d:jdk1.4.2lib; d:cjm当正确设置了平台下的 classpath 环境变量时,java 跨平台的特性就体现出来了。即你在编写程序中,描述一个类时,就不用具体指明它的完整路径,而是仅仅指明 java 中的类路径就可以了,即指出图 1 中竖线右边的查找路径就可以了。这样的话,你编写的程序拿到任何平台下时,只需要根据类文件的存放目录来书写相应的 classpath 环境

4、变量,而不用因为类的存放环境变化而修改程序。注意:java 中对于某个类的查找是把 classpath 中的每一项逐一连接,当一个连接能够正确找到相关类后,便不再向后查找。三、正确使用包 在使用包的过程中有很多需要注意的小细节,这里把常见的问题都列举如下: 1、对类路径的设置通常有两种方法: i)在系统的环境变量中设置,设置方法依据平台而变; ii)以命令参数的形式来设置。 如:javac -classpath d:jdk1.4.2libd:cjmedutestTestFile.javajava -classpath .;d:jdk1.4.2lib; d:cjm edu.test.TestFi

5、le注意:i)javac 和 java 命令有很大区别,可以这样区分,javac 是一个平台命令,它对具体的平台文件进行操作,要指明被编译的文件路径。而 java 是一个虚拟机命令,它对类操作,即对类的描述要用点分的描述形式,并且不能加扩展名,还要注意类名的大小写。 ii)有一个很奇怪的问题,即 javac 命令后面的 classpath 默认包含当前目录(符合 windows 的习惯),可是在 java 命令后面的 classpath 却不包含当前目录,所以在它的 classpath 中一定不能忘了加上当前目录的描述,即加上.。 2、在 java 程序中对类路径的描述用.分隔,而且也有当前目

6、录的概念。如要运行图 1 中的 TestFile 必须指明为 edu.test.TestFile。但是如果在类TestFile 中要调用和它在同一目录中的 TestString,则不必指明目录前缀。 3、在 java 程序中所有使用到的类都应该清楚的指明这个类的查找路径。一般有两种方法指明: i)在程序的开始使用 import 关键字指明。如类 TestFile 中要用到FileInputStream 类,则在程序头中加入 import java.io.FileReader; 或import java.io.*; ii)在程序中用到 FileFileReader 类处直接写完整路径,如: ja

7、va.io.FileFileReader fin = new java.io.FileReader(filename); 注意:java.lang 包总是被默认导入的。 4、类的目录结构一定要和类中第一句包声明一致。如类TestFile.class 对应的.java 文件的第一句必须包含:package edu.test; 确保类的存放路径和类中指明的包路径一致的方法一般有两种: i)编写.java 文件时存放的目录事先确定好,如 TestFile.java 就直接放在 edutest 目录下,然后用下面的语句编译: javac -classpath d:jdk1.4.2libd:cjmedu

8、testTestFile.java 当编译完成后,产生的 TestFile.class 文件会出现在编译命令中 java 文件的描述路径中。即出现在 d:testedutest 中 ii)通过-d 参数的使用来编译程序。如使用下面的语句来编译: javac -d d:cjm d:tempTestFile.java将在-d 后指定的目录 d:cjm 下面自动按照 packagek 中指定的目录结构来创建目录,并且将产生的.class 文件放在这个新建的目录下,即在 d:cjm下面建立edutest 目录,然后产生的 TestFile.class 放在 d:cjmedutest目录下。 5、为了便

9、于工程发布,可以将自己的类树打成.jar 文件。如将图 1 中的edu 下面的所有类文件打成一个.jar 文件,可以先转到 d:cjm 目录,再用下面的命令:jar -cvf test.jar edu这时会在 d:test 下产生一个 test.jar 文件,此.jar 文件中包含 edu下的完整目录结构和文件。使用这个.jar 文件时,只需在 classpath 中指明.jar文件的存放路径即可。 6、对其它资源的使用,如图标文件,文本等资源文件的使用必须要注意,查找资源文件不应从类文件所在的目录开始,而是应该从 package 指定的类路径 的起点开始(图 1 中从 edu 所在目录开始)

10、。如图 1 中看到的文本文件word.txt 在 resource 下面,而类文件 TestFile.class 在 edutest 下,在TestFile.class 中要使用到 resource 中的 word.txt,要按如下操作:fin= new FileReader(resource/word.txt);而不应该是:fin= new FileReader(././resource/word.txt);四、举例 本例用于统计一个文本文件中的单词数,注释中的编号对应前一节的编号:/ TestFile.javapackage edu.test; / - 4import java.io.Fi

11、leReader; / - 3import java.io.LineNumberReader;class TestFilepublic static void main(String argv)TestString ts = new TestString(); / - 2FileReader fin;LineNumberReader line = null;int wordNum = 0;tryfin= new FileReader(resource/word.txt); / - 6line = new LineNumberReader(fin); catch(Exception e)e.pr

12、intStackTrace();System.exit(0);while(true)tryString temp = line.readLine();wordNum += ts.CountWord(temp);catch(Exception e)break;tryline.close();catch(Exception e);System.out.println(Word count is: + wordNum);/ TestString.javapackage edu.test;import java.util.*;class TestString int CountWord(String

13、str)StringTokenizer token = new StringTokenizer(str);return token.countTokens();两个.java 文件存放在 d:temp 目录下,当前目录为 d:temp 使用下面的命令进行编译: d:tempjavac -classpath d:jdk1.4.2lib -d d:test *.java用下面的命令运行: / - 1d:temp java -classpath .;d:jdk1.4.2lib; d:testcom edu.test.TestFile如果需要打包的话,先转到 d:test,然后用下面命令: / - 5jar -cvf test.jar edu这时可产生一个 test.jar 文件,可将此文件置于任何平台下使用。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号