转自:http://blog.csdn.net/luoweifu/article/details/7281494

随着自己的编程经历的积累会发现往往自己在一些项目中写的类在别的项目中也会有多次用到。你肯定会想:如何自己的写的一些常用的类积累起来,生成自己的类库?如果是这样的话,很庆幸,你遇到通道中人了,因为我也是这样做的。下面就介绍一下我是怎么做的吧

一、先来明白一下关于classpath和path的概念

path是java中用来进行编译和运行的程序所在的路径,而classpath是类所在的路径。安装JDK之后,你应当设置好path和classpath路径。现在假设你JDK是安装在D:\IT\JDK6.0\java(TM) SE Development Kit下(因为我自己的是安装在此目录下),那么你要设置的path路径就是这个路径下的bin文件夹,即D:\IT\JDK6.0\java(TM) SE Development Kit\bin,因为bin文件夹下里面有javac.exe和java.exe(就是java中用来进行编译和运行的程序)。设置的方法如下:

1.打开“我的电脑\高级\环境变量”,如果是win7,则是:““计算机\属性\系统属性\高级环境变量”,打开如图一,

图一

双击“系统变量”下的path,把D:\IT\JDK6.0\java(TM) SE Development Kit设置进去,如图二

图二

打开命令提示符,输入javac,如果有一连串的文字,则说明设置成功。顺便说一下常用的命令提示符:javac 编译java文件,java运行java文件,java –version查询JDK的版本,包路径+“-cvf”+ className.java 打成Jar包,

2.接下来是接着设置classpath,假设你的java文件是在E:java文件夹,则可这样设置:如图三,后面有一点表示当前路径,这样的话你可以再任何路径下用javac编译java文件。

图三

3.如果你现在又一个打包好的jar文件(如何达成jar包后面会讲),现在要使用jar包里的类,则需要将jar包设置成classpath变量。假设你有一个自己tools.jar包,放在D:\IT\JDK6.0\java(TM) SE Development Kit\myJar,则需要将D:\IT\JDK6.0\java(TM) SE Development Kit\myJar\tools.jar设置到classpath中,如图四

图四

此时,你就可以在类中引用tools.jar中的类了,只需要在类中将其引入。以上操作在win7可能还出问题,还需要设置用户变量里的classpath(为什么会这样,我也不值得,希望共同探讨)。注意在图一中是有“Adiministrator用户变量”和“系统变量的”,这是只需按照图四将D:\IT\JDK6.0\java(TM) SE Development Kit\myJar\tools.jar设置到用户变量里的classpath中去就行。

二、在Eclipse中如何打成jar包?生自己的类库

Eclipse和MyEclipse是目前最流行的java集成开发环境,如果你用的是其他的开发工具,建议你尝试着用一下Eclipse进行开发,因为它功能很强大,很好用。下面就介绍一下如何在Eclipse下将自己写好的类打成jar包,生成自己的类库。

假设当前的文档结构这样的:

图五

右击项目文件Tool,选择Export,打开对话框,选择Java\JAR file后下一步,如果你只需要打包cn.edu.jxau.tools下的类,只需要选择该类即可,如图六

图六

在JAR file中选择要导出的路径和文件名,如图图七

图七

点击“下一步”、“下一步”,然后Main class中选择包含main函数(如果有面函数的话),然后点击完成(finish)。

三、为自己的类生成注释文档,即生成javadoc文件。

第二的介绍可以生成自己的类库了。但是时间久自己写的类和方法就会忘记,生成一个高质量的注释文档就很有必要的。庆幸的是Java自己就能很好的完成这一功能,能帮我们生成类似API的文档,即javadoc文档。下面介绍一下在Eclipse中如何生成javadoc文档:

1、对类进行注释

在生成javadoc文档之前首先要对类进行注释。注释有如下三种方式:

a,//注释内容;b,/*注释内容*/;(快捷键:选中要注释的内容后按“shift+Ctrl+/”,取消注释是“shift+Ctrl+\”)

c,

/**

*注释内容。

*/

其中只有c方式在生成javadoc中才有用。以我自己写的ArrayQueue类为例说明一下几种注释,只需要对public方法和变量进行注释,因为只有public类型才能被其他类访问。

(1)、在类前面注释类说明和创作者,如

/**

* 文件的复制,字符串输入到文件中,将文件内容打印到控制台

*

@author xiaoxu

*

*/

(2)、在public方法前面注释方法的说明,如public static String readFile(File file)方法注释:

/**

* 读取一个文件里的内容

*

@param file

*            要读的文件

@return 返回读取文件的字符串

*/

(3)、注释对public变量进行注释,假设有一表示窗口宽度的变量WIDTH,如下注释

/**

* 主窗口的宽度

*/

public static final int WIDTH = 1000;

部分结果如下

图八(1)

2、用Eclipse生成javadoc文档

选中要生成javadoc文档的项目,再在菜单栏中的选择菜project\Generate Javadoc…。打开对话框后“javadoc command”的默认路径是C:\jdk\bin\javadoc.exe,如果没有该路径就自己添加,找到自己安装JDK的根目录下的bin\javadoc.exe,如下图

图8(2)

选择要生成javadoc的文件,然后选择导出的路径,一般选择默认的项目下的doc文件夹,改成其他路径可能会有错。如下:

图8(3)

之后就一路next,最后点finish就OK了。在这期间可能会出现警告,如下图

图8(4)

选择“Yes To All”。

四、如何使用自己创建的类库?

通过一、二、三,已经能够创建自己的类库了。下面说明一下如何使用自己的类库。

方法一:

假设现在要创建一个项目Test,里面要用到自己类库tools.jar中的S类。新建一个类Test.java,里面的main方法是这样的:

public static void main(String[] args) {

S.pl("java");  //S类中的S.pl()封装了System.out.println(obj);

}

这时Eclipse会报错,会说S这个类不存在,是否要创建这个类。这是因为默认的JRE并不存在tools.jar这个包,如图八。

图八(5)

那么如何将这个包夹道默认的JRE System Library中呢?

选择Window\ Preferences,打开对话框,选择Java\Installed JREs,如图九

图九

接下来,点击“Add”添加一个新的JRE,选择Standard VM后点击下一步,在JRE home中点击Directory选择JDK按钮路径下的jre文件夹(即包含rt.jar的文件夹,rt.jar是jdk的根文件夹,里面包含了所有的基本类)如图,然后点击“Add External JARs”选择生成好的tools.jar文件(最好先别tools.jar放在一个比较访问,比较安全的文件夹内,我的是直接放在JDK安装路径下的D:\IT\JDK6.0\java(TM) SE Development Kit\myJar里),如图十

图十

点击finish。

然后,在Test项目中将默认的JRE System Library换成刚刚配置好的JRE,右击Test选择Build Path选择Configure Build Path…,打开对话框,将原有的JRE Remove掉,然后Add Library,选择JRE System Library,下一步,点击“Installed JREs”后选择刚刚配置好的那个JRE,点击finish。

现在就配置好了。此时的JRE就能看到tools.jar文件,如下图:

图十一

方法二:

将刚刚生成的自己的类库Tool.jar直接拷贝到JDK和JRE的安装目录中的jre/lib/ext/中,这时候我们需要重启一下Eclipse,这样才能将刚才的那个包加载进自动生成的系统库中。

方法三:

当然除以上方法之外,也可以直接在单个项目中通过"bulid path"导入External Jar,额外的jar包。此方法类似于更换新的JRE,自己去琢磨吧!哈哈……

当然这只是我自己个人琢磨出来的方法,可能还有更好的方法。对这方面的知识我还需要进一步的学习,如果有对此方面感兴趣的朋友,欢迎加入我,互相学习,我的联系方法是:

email:luoweifu@126.com;

Java中如何使封装自己的类,建立并使用自己的类库?的更多相关文章

  1. java中基本类型封装对象所占内存的大小(转)

    这是一个程序,java中没有现成的sizeof的实现,原因主要是java中的基本数据类型的大小都是固定的,所以看上去没有必要用sizeof这个关键字. 实现的想法是这样的:java.lang.Runt ...

  2. java中只能有一个实例的类的创建

    Java中,如果我们创建一个类,想让这个类只有一个对象,那么我们可以 1:把该类的构造方法设计为private 2:在该类中定义一个static方法,在该方法中创建对象 package test; / ...

  3. java 中操作字符串都有哪些类?(未完成)它们之间有什么区别?(未完成)

    java 中操作字符串都有哪些类?(未完成)它们之间有什么区别?(未完成)

  4. java中如何使正在运行中的线程退出

    终止线程的三种方法      有三种方法可以使终止线程.      1.  使用退出标志,使线程正常退出,也就是当run方法完成后线程终止.      2.  使用stop方法强行终止线程(这个方法不 ...

  5. 全面解释java中StringBuilder、StringBuffer、String类之间的关系

    StringBuilder.StringBuffer.String类之间的关系 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,在上一篇博文中我 ...

  6. java 中的JDK封装的数据结构和算法解析(集合类)----顺序表 List 之 ArrayList

    1. 数据结构之List (java:接口)[由于是分析原理,这里多用截图说明] List是集合类中的容器之一,其定义如下:(无序可重复) An ordered collection (also kn ...

  7. 【Java基本功】一文了解Java中继承、封装、多态的细节

    本节主要介绍Java面向对象三大特性:继承 封装 多态,以及其中的原理. 本文会结合虚拟机对引用和对象的不同处理来介绍三大特性的原理. 继承 Java中的继承只能单继承,但是可以通过内部类继承其他类来 ...

  8. Java 中你必须了解的常用类(8)

    Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的, 比如基本类型不能调用方法.功能 ...

  9. java中的类加载器ClassLoader和类初始化

    每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.class),类加载器实质上是一条类加载器链,一般的,我们只会用到一 ...

随机推荐

  1. HDU4891_The Great Pan_字符串水题

    2014多校第五题,当时题面上的10^5写成105,我们大家都wa了几发,改正后我和一血就差几秒…不能忍 题目:http://acm.hdu.edu.cn/showproblem.php?pid=48 ...

  2. 【原创】express3.4.8源码解析之中间件

    前言 注意:旧文章转成markdown格式. 中间件(middleware)的概念来自于TJ的connect库,express就是建立在connect之上. 就如同connect的意思是 连接 一样, ...

  3. Java转义符\\|

    http://blog.csdn.net/stewen_001/article/details/22871737 看一段程序 String t = "a||b||c||d"; St ...

  4. Flume-NG(1.5版本)中SpillableMemoryChannel源码级分析

    SpillableMemoryChannel是1.5版本新增的一个channel.这个channel优先将evnet放在内存中,一旦内存达到设定的容量就使用file channel写入磁盘.然后读的时 ...

  5. tyvj4221 货车漂移

    背景 蒟蒻中学的蒟蒻遇到了一些小问题. 描述 蒟蒻考完noip也就要回家种田了,他老家的田地在s点,可是种子市场在e点,为了购买种子,中途要经过很多城市,这导致快递费非常的贵(因为快到双11了),于是 ...

  6. Android如何在java代码中设置margin

    习惯了直接在xml里设置margin(距离上下左右都是10dip),如: <ImageView android:layout_margin="10dip" android:s ...

  7. BNU 2418 Ultra-QuickSort (线段树求逆序对)

    题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=2418 解题报告:就是给你n个数,然后让你求这个数列的逆序对是多少?题目中n的范围是n & ...

  8. [Effective JavaScript 笔记]第49条:数组迭代要优先使用for循环而不是for...in循环

    示例 下面代码中mean的输出值是多少? var scores=[98,74,85,77,93,100,89]; var total=0; for(var score in scores){ tota ...

  9. sed替换字符串时,使用正则表达式的注意事项

    sed的使用方法为: 使用单个模式替换:sed 's/pattern/replacement/flags' filename,例如echo 'abc' | sed 's/a/A/'-->Abc ...

  10. PHP中冒号、endif、endwhile、endfor这些都是什么

    我们经常在wordpress一类博客程序的模板里面看到很多奇怪的PHP语法,比如:<?php if(empty($GET_['a'])): ?><font color="r ...