我想在我的班级中使用 javassist 添加一个 SLF4J 记录器。所以首先,我尝试获取它的 CtClass ,例如我可以在以下之后构建该字段:
CtClass loggerClass = pool.get(org.slf4j.Logger.class.getName());
Run Code Online (Sandbox Code Playgroud)
但是我从来没有通过那条线并且总是得到一个 javassist.NotFoundException。
我尝试了不同的事情:
pool.importPackage("org.slf4j.Logger");
// or
pool.importPackage("org.slf4j");
Run Code Online (Sandbox Code Playgroud)
我什至尝试将 org.slf4j.Logger 传递给 URLClassLoader:
// add org.slf4j.Logger to the list of urls...
// then:
URLClassLoader loader = new URLClassLoader(urls);
ClassPool.getDefault().insertClassPath(new LoaderClassPath(loader));
Run Code Online (Sandbox Code Playgroud)
但没有任何作用。
注意:这是在调用 insertClassPath 之后创建池的方式:
final ClassPool pool = new ClassPool(ClassPool.getDefault());
pool.childFirstLookup = true;
Run Code Online (Sandbox Code Playgroud)
我完全被困在这里。任何帮助将非常感激。
提供 jar 文件名的路径。
检查下面的代码。我可以看到 slf4j 加载的 Logger 类
ClassPool pool = new ClassPool(ClassPool.getDefault());
pool.appendClassPath("./otherlib/slf4j-api-1.7.6.jar");
CtClass ctClass = pool.get("org.slf4j.Logger");
System.out.println(ctClass);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |