选择显示字体大小

玩转java的classpath(二)classpath工具

二、可能出现的问题

  不管他们是否愿意承认,初学者和富有经验的java开发者都一样,他们都曾经在某些时候(通常是在那些最糟糕的情形下)被冗长、复杂的classpath欺骗。 应用程序所依赖的第三方类和用户定义类的数量逐渐增长,classpath也逐渐成了一个堆积所有可能的目录和档案文件名的地方。此时,类装载器首先装载的究竟是哪一个类也就不再显而易见。如果classpath中包含重复的类入口,这个问题尤其突出。前面已经提到,类装载器总是装载第一个它在classpath中找到的具有合适名字的类,从实际效果看,它“隐藏”了其他具有合适名字但在classpath中优先级较低的类。

  如果不小心,你很容易掉进这个classpath的陷阱。当你结束了一天漫长的工作,最后为了让应用程序使用最好、最新的类,你把一个目录加入到了classpath,但与此同时,你却忘记了:在classpath的另一个具有更高优先级的目录下,存放着该类的另一个版本!

三、一个简单的classpath工具

  优先级问题是扁平路径声明方法与生俱来固有的问题,但它不是只有java的classpath才有的问题。要解决这个问题,你只需站到富有传奇色彩的软件巨构的肩膀上:unix操作系统有一个which命令,在命令参数中指定一个名字,which就会显示出当这个名字作为命令执行时执行文件的路径名。实际上,which命令是分析path变量,然后找出命令第一次出现的位置。对于java的类路径管理来说,这应该也是一个好工具。在它的启发之下,我着手设计了一个java工具jwhich。这个工具要求指定一个java类的名字,然后根据classpath的指引,找出类装载器即将装载的类所在位置的绝对路径。

  下面是一个jwhich的使用实例。它显示出当java类装载器装载com.clarkware.ejb.shoppingcartbean类时,该类第一次出现位置的绝对路径名,查找结果显示该类在某个目录下:

> java jwhich com.clarkware.ejb.shoppingcartbean

class 'com.clarkware.ejb.shoppingcartbean' found in
'/home/mclark/classes/com/clarkware/ejb/shoppingcartbean.class'

  下面是第二个jwhich的使用实例。它显示出当java类装载器装载javax.servlet.http.httpservlet类时,该类第一次出现位置的绝对路径名,查找结果显示该类在某个档案文件中:

> java jwhich javax.servlet.http.httpservlet

class 'javax.servlet.http.httpservlet' found in
'file:/home/mclark/lib/servlet.jar!/javax/servlet/http/httpservlet.class'


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons