gpt4 book ai didi

javassist 从第三方库/jar 获取 CtClass

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:31 27 4
gpt4 key购买 nike

我想用 javassist 在我的类(class)中添加一个 SLF4J 记录器。所以首先,我尝试获取它的 CtClass,这样我就可以在之后构建该字段:

CtClass loggerClass = pool.get(org.slf4j.Logger.class.getName());

但我从来没有通过那条线并且总是得到 javassist.NotFoundException。

我尝试了不同的东西:

pool.importPackage("org.slf4j.Logger");
// or
pool.importPackage("org.slf4j");

我什至尝试将 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));

但没有任何作用。

注意:这是在调用 insertClassPath 之后创建的方式:

final ClassPool pool = new ClassPool(ClassPool.getDefault());
pool.childFirstLookup = true;

我完全被困在这里了。任何帮助将不胜感激。

最佳答案

提供 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);

关于javassist 从第三方库/jar 获取 CtClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22601090/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com