最后,如果当前的classpath中能够找到指定的类,则程序显示包含该类的类文件所在位置的绝对路径名(21-24行)。作为一种调试辅助手段,如果当前classpath中不能找到指定的类,则程序获取java.class.path系统属性并显示当前的classpath(24-28行)。
很容易想象,在使用Servlet引擎classpath的Java Servlet中,或者在使用EJB服务器classpath的EJB组件中,上面这段简单的代码是如何运作。例如,如果JWhich类是由Servlet引擎的定制类装载器装入,那么程序将用Servlet引擎的类装载器去寻找指定的类。如果Servlet引擎的类装载器不能找到类文件,它将委托它的父类装载器。一般地,当JWhich被某个类装载器装入时,它能够找出当前类装载器以及所有其父类装载器所装入的所有类。
【结束语】如果需要是所有发明之母,那么帮助我们管理Java类路径的工具可以说迟到了很长时间。Java新闻组和邮件列表中充塞着许多有关classpath的问题,现在JWhich为我们提供了一个简单却强大的工具,帮助我们在任何环境中彻底玩转Java类路径。
【参考资源】
JWhich的全功能版,包含一个classpath检验器:
http://www.clarkware.com/software/jwhich.zip
Sun JDK的官方文档,以及在各种官方支持的平台上有关classpath的说明:
http://java.sun.com/j2se/1.3/docs/tooldocs/findingclasses.html
关于在Windows和Unix上设置classpath的详细说明,参见:
Unix:
http://java.sun.com/j2se/1.3/docs/tooldocs/solaris/classpath.html
Windows:
http://java.sun.com/j2se/1.3/docs/tooldocs/win32/classpath.html