java - 使用 javaagent 获取 Web 应用程序类?

标签 java instrumentation javassist

有没有办法检索 Web 应用程序加载的类或类加载器?

例如,如果我使用此代码:

ClassLoader c=getClass().getClassLoader();
logmsg("c="+c);
URLClassLoader u=(URLClassLoader)c;
URL[] urls=u.getURLs();
for (URL i : urls) {
    logmsg("url: "+i);
}

我正在获取代理使用的库,而不是 Web 应用程序

最佳答案

看看Reflections包裹。它使用 javassist 提供运行时类元数据查找。为了找到正确的类路径 URL,它提供了一个辅助类 ClasspathHelper 。 ClasspathHelper 提供了几个静态方法,它们通过传递目标 WebApp 的 ServletContext 返回 WebApp 的 URL:

static URL forWebInfClasses(javax.servlet.ServletContext servletContext)
static Set<URL> forWebInfLib(javax.servlet.ServletContext servletContext)

关于java - 使用 javaagent 获取 Web 应用程序类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30893039/

相关文章:

java - 为什么 ASM 不调用我的 `` VisitCode``?

java - Java 类可以在运行时向自身添加方法吗?

variables - 如何修改java字节码中局部变量的类型

java - 如何在 Java 中每秒引发 N 个事件?

java - Java 7 try-with-resources 的 Clover 检测后编译失败

debugging - 什么是仪表点?

java - 如何使用 javaagent 访问工具方法的变量?

Linux 上的 Java 程序关闭

java - Spring Boot 配置 + RepositoryRestResource + 身份验证

java - 启动 Java Web 启动应用程序后没有任何反应