怎么定位一个class所在位置

如何定位一个class所在位置?
在J2EE应用开发中,应用所依赖类库是应用开发部署阶段需要考虑的重要因素。由于某些底层类库如Servlet API,JDBC Driver, JTA等已经包含在某些应用服务器中,开发阶段所依赖类库并不一定是运行时所必需的。这个依赖管理增加了复杂度,加上有时对应用的管理不善,经常会遇到在 开发环境正常运行的应用到了生产环境就出现java.lang.ClassNotFoundException或 java.lang.NoClassDefFoundError这样的异常或错误。此时,如果不了解应用的依赖关系,且应用的依赖关系比较复杂,了解某个 具体的class所在位置就显得尤为重要。Java的Class类里正好提供了这样功能,这个方法是getResource()。这个方法接受一个相对路 径名称,返回一个表示该资源绝对位置的URL对象。比如某个应用依赖于javax.transaction.TransactionManager类,要 了解该类所在jar文件位置可以用下面代码:
    public void init() throws ServletException {
        ......
        URL url = this.getClass().getResource("/javax/transaction/TransactionManager.class");
        System.out.println("$$$$$$$$$$$ " + url);
        ......
    }
上述代码是HttpServlet的初使化代码,在Tomcat 4.1.31中应用启动后,标准输出会打出
$$$$$$$$$$$ jar:file:<path_tomcat_home>/common/lib/jta.jar!/javax/transaction/TransactionManager.class
其 中<path_tomcat_home>和Tomcat安装的具体位置有关,从上述输出中可以知道 javax.transaction.TransactionManager类是从Tomcat的common/lib目录下的jta.jar文件的 /javax/transaction/TransactionManager.class Java类文件中加载的。可见通过该方法可以迅速的定位到class所在具体位置,这对解决 java.lang.ClassNotFoundException或java.lang.NoClassDefFoundError这样的异常或错误是 个有效的诊断手段。
1 楼 抛出异常的爱 2006-12-15  
main,junit那种用什么方法呢?
2 楼 schnell18 2006-12-15  
main很显然在main函数中插一段上述代码。junit可以在setUp中吧