网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  管理 java 类路径(unix 和 mac os x)     
  文章作者:未知  文章来源:水木森林  
  查看:108次  录入:管理员--2007-11-17  
 

2007 年 1 月 04 日

类路径是 java™ 平台中最复杂也最令人头痛的部分之一,但熟练掌握类路径对成为一名专业 java 程序员来说却又十分关键。在本文中,elliotte rusty harold 为您阐述了类路径和源路径的复杂性,并向您展示了如何在 unix 和 mac os x 中熟练掌握它们。如果您使用的是 windows,请参阅本文的 姊妹篇。

    类路径可以连接 java 运行库和文件系统。它定义编译器和解释器应该在何处查找要加载的 .class 文件。它的基本思想是:文件系统的层次结构反映了 java 包的层次结构,而类路径则定义了文件系统中的哪个目录可以作为 java 包层次结构的根。

    遗憾的是,通常文件系统非常复杂并依赖于平台,而且和 java 包也不能很好地匹配。这样一来,不论是新用户还是资深 java 程序员都深感类路径的棘手。没错,它的确不是 java 平台好的一面,它让您到了下班的时候还在忙于调试一个顽固的小问题。

    当然采用 eclipse 这样的优秀 ide 可以减少管理类路径的一些困难,但只能说是一些,而且前提还必须是一切都正常(但这不大可能,因为总会有一些意外出现)。因此,每个 java 程序员都必须要全面了解类路径,惟有如此,才有希望调试类路径中所出现的问题。

    在本文中,我给出了您所需要了解的有关 unix、linux 和 mac os x 中的 java 类路径(以及相关源路径)的全部内容。本文的 姊妹篇 则展示了 windows 上的类似技术。文中列出的步骤可以作为指南,并能解决出现的大多数问题。

包结构

    要掌握类路径,首先应从其源代码入手。每个类都属于一个包,而此包必须 遵守标准的命名约定。简单地说,包的名称要由颠倒的两级域名开始,比如 com.example 或 edu.poly,之后是至少一个或多个单词用于描述包的内容。比方说,假设有一个域名为 elharo.com,如果要创建一个 fraction 类,可以将其放入如下包中:

  • com.elharo.math
  • com.elharo.numbers
  • com.elharo.math.algebra.fields

    在颠倒的域名之后,需要使用单一单词的子包名。不要使用缩写形式,并要保证拼写正确。如果需要,可以使用拼写检查器。大部分与类路径相关的问题都是由在源代码中使用某个单词而在文件系统中使用的却是与之稍有不同的拼写或缩写而引起的。所以最好的做法就是总是使用拼写正确且没有缩写的名称。

    整个包名称应该是小写的,即使该名称是在别处常采取大写形式的一些惯用名称和缩写词。windows 通常不区分文件名中的大小写,但 java 和一些 unix 文件系统却区分。如果需要在不同的系统间移动文件,大小写问题肯定会带来一些麻烦。包名称必须要全部由 ascii 字符组成。一些编译器也接受用 hebrew、cyrillic、greek 或其他脚本编写的包名称,但大多数文件系统并不接受;您稍后就会看到,这样的包名称必须担负充当目录名这样的双重任务。java 包和类名是 unicode,但很多文件系统(包括 fat)却不能识别 unicode。遗憾的是,fat 系统非常之多。如果只简单地用不同的默认编码将文件复制到系统将会使编译器和解释器无法找到正确的类。

  • 将类放到包中。
  • 严格遵守包和类的命名约定和大小写约定。
  • 确保包的层次结构与目录的层次结构匹配。
  • 总是对 javac 应用 -d 选项。
  • 不要在 jre/lib/ext 内放任何东西。
  • 不要在 jre/lib/endorsed 内放任何东西。
  • 不要将 .java 文件与 .class 文件放在同一个目录。
  • 不要将任何 .java 或 .class 文件放在当前的工作目录。

    最后一点提示:很多耗时的类路径问题的起因大都是目录名拼写错误或从错误目录进行了编译。如果您不能找到问题的所在,可以问问周围的朋友或同事。以我的经验,自己发现自己的错误总是困难的,但这些错误在别人看来却显而易见。所以寻求他人的帮助也是一种切实有效的调试技巧。

    类路径确实不是个简单的问题,但总会有相应的应对方法,所以它是完全可管理的。些许的谨慎加上对本文所介绍的命名约定、命令行参数和目录结构的注意,应该能够使您在问题最少的情况下编译和运行程序了。

 

参考资料

学习

  • 您可以参阅本文在 developerworks 全球站点上的 英文原文 。

  • “管理 java 类路径 (windows)”(elliotte harold,developerworks,2006 年 12 月):本教程的姊妹篇,介绍了如何在 windows 下设置类路径和源路径。

  • “项目管理: maven 让事情变得简单”(charles chan,developerworks,2003 年 4 月):介绍如何使用 maven 进行项目管理。

  • “ibm cloudscape:了解 java 类路径” (jean anderson and susan cline,developerworks,2004 年 9 月):介绍了如何为 cloudscape 和 derbyexplains 设置 java 类路径。

  • “最佳实践: websphere application server 的 classpath 结构” (websphere best practices team,developerworks,2001 年 8 月):关于在 websphere application server 上管理类路径的建议。

  • developerworks java 技术文档库:获得有关 java 平台的技术文章、技巧、教程、标准和 ibm 红皮书。


获得产品和技术

  • 下载 ant:当前 apache 的顶级项目。

  • 下载 maven:java 项目的 apache 构建管理器。

讨论

  • 参与 developerworks 论坛。

  • developerworks blog:加入 developerworks 社区。



关于作者

管理 java 类路径(unix 和 mac os x)(图一)

管理 java 类路径(unix 和 mac os x)(图七)

管理 java 类路径(unix 和 mac os x)(图一)

elliotte rusty harold 来自新奥尔良,现在他还定期回老家喝一碗美味的秋葵汤。不过目前,他和妻子 beth 定居在纽约临近布鲁克林的 prospect heights,同住的还有他的猫咪 charm(取自夸克)和 marjorie(取自他岳母的名字)。他是 polytechnic 大学计算机科学的副教授,他在该校讲授 java 和面向对象编程。他的 web 站点 cafe au lait 已经成为 internet 上最流行的独立 java 站点之一,它的姊妹站点 cafe con leche 已经成为最流行的 xml 站点之一。 他最近编著的一本书是 java i/o, 2nd edition。他目前在从事处理 xml 的 xom api、jaxen xpath 引擎和 jester 测试覆盖率工具的开发工作。

 
 
上一篇: 入门基础 java参数传递方式    下一篇: 论两个关于*.hbm.xml配置异常的解决
  相关文档
jrlib(公共类库)_src_0.5beta源代码发布版 11-17
最新sun授权国内考试中心一览表 11-17
java 库的建立方法及其实例 (上) 11-17
j2se简介 11-16
动画小程序实现的基本步骤 11-17
java的xml编程 11-17
如何在tomcat配置web在线后台管理 11-17
java高级:多核线程-volatile原理与技巧 11-16
循速渐进学用session bean(四) 11-16
使用java连接处于proxy(or防火墙)之外的http服务器 11-17
关于java编程的中文问题的几条分析原则 11-16
java 开发环境的过去、现在和将来 11-16
深入讲解jsp 2.0下的动态内容缓存技术 (1) 03-25
servlet与javabean实现长文本数据分页显示 11-17
jbuilder2005 struts深度体验之新增 11-17
学习struts提供的和form相关的标签 11-17
maven 安装实践 11-17
解决jsp开发中web程序中文显示三种方法 11-10
tomcat和mysql的一个server.xml 11-17
folder 对象 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息