如何在Tomcat中找到部署的类的绝对路径?

时间:2014-09-24 06:22:06

标签: java classpath

我在Tomcat服务器上部署了一个应用程序。我使用这个stackoverflow link找出加载类的绝对路径,如下所示:

代码1:

  getClass().getClassLoader().getResource(".").getPath();

代码2:

  Thread.currentThread().getContextClassLoader().getResource(".").getPath();

预期结果:

  /D:/ProgramFiles/Tomcat-7.0.26/webapps/catalog-web/WEB-INF/classes/

实际结果:

  /D:/ProgramFiles/Tomcat-7.0.26/lib/

真的与找到的结果混淆了。最后我尝试了下面的内容:

代码1:

  getClass().getClassLoader().getResource("/").getPath();

代码2:

  Thread.currentThread().getContextClassLoader().getResource("/").getPath();

我终于得到了结果:

  /D:/ProgramFiles/Tomcat-7.0.26/webapps/catalog-web/WEB-INF/classes/

所以我的问题如下:

a)你能解释一下为什么会这样吗?

b)另外,请告诉我是否还有其他更好的方式来获得我的预期结果?

1 个答案:

答案 0 :(得分:0)

那是因为getResource(“。”)返回调用类所在的“当前”文件夹。在你的情况下,调用类是你的webapp的类加载器,它在tomcat lib中声明,它应该位于tomcat / lib文件夹中。

getResource(“/”)返回类路径的根文件夹,该文件夹由webapp类加载器指向WEB-INF / classes。