【发布时间】:2012-03-28 14:12:23
【问题描述】:
我在 tomcat lib/ 文件夹中有一个自定义 jar 文件。据我所知,此文件夹中的任何 jar 文件都会在启动时加载。
我是否可以检查是否加载了特定的 jar 文件?
我在 unix rhel5 上运行 tomcat-6.0.35.A。
【问题讨论】:
我在 tomcat lib/ 文件夹中有一个自定义 jar 文件。据我所知,此文件夹中的任何 jar 文件都会在启动时加载。
我是否可以检查是否加载了特定的 jar 文件?
我在 unix rhel5 上运行 tomcat-6.0.35.A。
【问题讨论】:
我想我已经在 Tomcat 日志文件之一中看到了启动时打开了哪些 jar。如果没有,我可以考虑两种可能的选择:
-verbose:class 添加到JAVA_OPTS。它应该在 JVM 加载类时打印类(大量输出)。 Grep 日志文件(或 stdout)以查找是否列出了 jar 中的类【讨论】:
lsof 确实回答了我的问题。它帮助我查看罐子是否正在使用。谢谢。
Jars 并不是真正“在启动时加载”。但是 Tomcat 的系统类加载器正在从这些 jar 中加载类。您可以检查 jar 中的某些类是否可用:
getClass().getClassloader().loadClass(className)
getClass().getResource("/" + className.replace('.', '/') + ".class")
在第二种情况下,getResource() 返回的 url 中应该有名称或 jar 文件。
【讨论】: