我需要在Tomcat和Websphere服务器上获取我的Web应用程序中使用的库的jarNames。
我有这段代码:
public void libs(ActionEvent e){
System.getProperty("java.class.path");
try {
Field ucp = this.getClass().getClassLoader().getClass()
.getSuperclass().getDeclaredField("ucp");
ucp.setAccessible(true);
Object valueUcp = ucp.get(this.getClass().getClassLoader());
Field loaders = valueUcp.getClass().getDeclaredField("path");
loaders.setAccessible(true);
ArrayList collection = (ArrayList) loaders.get(valueUcp);
} catch (Exception e) {
e.printStackTrace();
}
}
它适用于Tomcat,但不适用于websphere。
PS。对不起我的英文不好。
答案 0 :(得分:1)
没有可移植的API来获取此信息。在WebSphere Application Server上,ClassLoader.toString通常包含用于诊断目的的完整类路径,但我绝对不建议尝试“解析”输出。我不建议在Tomcat上使用反射:它可能适用于当前的Tomcat版本,但不能保证类加载器实现不会改变并破坏您的应用程序。
答案 1 :(得分:0)
如果没有必要以编程方式获取它,这就是我的建议。在控制台中使用类加载器查看器,它为您提供所需的信息。
我建议您在测试环境中运行自动化测试用例,然后查看它,您将能够看到运行时加载的所有类,以满足您的Web应用程序需求。
我同意fnt有什么需要写这样的东西?如果您正处于故障排除阶段并尝试查找某种NCDF或CNF异常,那么使用类加载器查看器的方法将会有很大帮助。另外,在native_stderr.log中查看详细的类加载器输出将在故障排除活动中提供巨大的帮助。
HTH Manglu