Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区 » 安装/配置/编译/环境  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Re:关于package 的使用疑问! [Re:cocoa911]
javalean





发贴: 20
积分: 0
于 2005-08-05 19:45 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
看一下我的这篇乱七八糟的文章吧。

java中包(package)的使用为名字空间的管理提供了方便,可以利用java中包技术来创建自己的类库,从而实现代码的复用。但是对于一名java初学者来说,如何创建自己的第一个包,和如何使用自己的第一个包,似乎还是一件不太容易的事情。笔者作为一名从c++转向java的程序语言学习者,在这篇文章了谈了一下自己的体会。

关于包的知识和包的命名方法请参考《java编程思考》或者其它的java基础书。
下面的代码创建了一个tools包(当然你也可以说它是com.bruceeckel.tools包):
//下面的代码来自《java编程思考》中文版第三版第129页
package com.bruceeckel.tools;//创建一个tools包

public class P{
public static void rint(String s){
System.out.print( s );
}
public static void rintln(String s){
System.out.println( s );
}
}//程序结束
写完代码后,第一个问题来了,这段代码应该保存在哪里?随便放?当然不是。这个文本(因为我们还没有编译它)的保存位置应该是classpath位置开始的com.bruceeckel.tools的目录下。关于classpath的设置,我在《java环境变量的设置》中已经有了介绍。可以看到这个文本是个.java文件,然后编译它,如果你想运行它,这时是会出错的,因为它没有main()函数。你可以这样理解,它只是一个功能单元,是为别的文件提供服务的。
我想这个时候你已经看完了我的《java环境变量的设置》,但是我想你仍然会感到迷茫,因为你设置好后,编译这个程序,居然(呵呵,应该是理所当然)出错了。问题出在哪了呢?答案是classpath的设置不对。我想这个时候你的手上已经抓了一个烂西红柿。先别扔,听我说完。按照我在前面的介绍(其实这也是n多的java入门教程里面讲的),classpath的值为
.;d:\j2se\lib\dt.jar;d:\j2se\lib\tools.jar
而在这个时候所有的作者(包括我)都认为你不会用类库的。当然类库是个好东西,你应该拥有自己的良好的类库。
在上面的classpath值中,dt.jar和tools.jar中存放的是java的标准类库,当然我们要创建自己的类库,得另外设置classpath,下面以我的机器为例子,结合上面的代码段来讲。
首先将classpath的值改为
.;d:\j2se\lib\dt.jar;d:\j2se\lib\tools.jar;d:\j2se\lib
因为我想把自己的类库建在d:\j2se\lib的子目录中。所以,上面的P.java文件的存放路径是d:\j2se\lib\com\bruceekel\tools
然后编译,这次不会出错了。呵呵。
我曾经看了一些java的初级教材讲到这些问题时,作者常用的话是“在我的机器上”。这是一句让人费解的话,也容易成为推却责任的借口。下面我再举一个例子,假设你的jdk安装的目录是c:\jdk1.2,你创建的包名是com.joelean.toolslibrary,那么你的classpath可相应改成
.;c:\jdk1.2\lib\dt.jar;c:\jdk1.2\lib\tools.jar;c:\jdk1.2\lib
这时候的你的类库将存放在c:\jdk1.2\lib目录下,以后你想增加新的类库,只需要在这个目录下创建你的包就可以,不需要再修改classpath。
下面的代码检验刚才创建的包是不是可以使用。
import com.bruceeckel.tools.*;//import你需要的文件

public class ToolTest{
public static void main(String [] args){
P.rint("This is 1st line.");
P.rint("This is 1st line.");
P.rintln("This is 1st line too.");
P.rintln("This is the 2nd line.");
}
}//程序结束
程序运行结果为
This is 1st line.This is 1st line.This is 1st line too.
This is the 2nd line.


javalean edited on 2005-08-05 19:47


话题树型展开
人气 标题 作者 字数 发贴时间
9389 关于package 的使用疑问! cocoa911 1493 2005-08-05 09:11
7684 Re:关于package 的使用疑问! why 119 2005-08-05 13:11
7714 Re:关于package 的使用疑问! cocoa911 28 2005-08-05 16:49
7647 Re:关于package 的使用疑问! why 298 2005-08-05 18:33
8040 Re:关于package 的使用疑问! javalean 1967 2005-08-05 19:45
8037 Re:关于package 的使用疑问! cocoa911 1653 2005-08-05 22:59
7646 Re:关于package 的使用疑问! why 695 2005-08-05 23:45
7627 Re:关于package 的使用疑问! cocoa911 14 2005-08-06 07:51
7753 Re:关于package 的使用疑问! xiaoqiang806 47 2005-08-07 19:30
8317 Re:关于package 的使用疑问! javalean 82 2005-08-08 12:22

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923