今天在用javassist 这个库的时候遇到了一些问题。
调试发现在此行代码处会 报错 javassist.NotFoundException
但是正常 import 的时候并不会报错。然后我找到了以下三种解决方法。
import com.fasterxml.jackson.databind.node.BaseJsonNode;
ClassPool classPool = ClassPool.getDefault();
CtClass ctClass = classPool.get("com.fasterxml.jackson.databind.node.BaseJsonNode");
方法一
使用appendClassPath 导入响应jar包或者class文件。
ClassPool classPool = ClassPool.getDefault();
classPool.appendClassPath("/Users/taoyu/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.15.3/jackson-databind-2.15.3.jar");
CtClass ctClass = classPool.get("com.fasterxml.jackson.databind.node.BaseJsonNode");
方法二
ClassPool classPool = ClassPool.getDefault();
classPool.insertClassPath(new ClassClassPath(BaseJsonNode.class));
CtClass ctClass = classPool.get(BaseJsonNode.class.getName());
// 或者下面这个也可以
// CtClass ctClass = classPool.get("com.fasterxml.jackson.databind.node.BaseJsonNode");
方法三
ClassPool classPool = ClassPool.getDefault();
ClassPool.getDefault().appendClassPath(new LoaderClassPath(Thread.currentThread().getContextClassLoader()));
CtClass ctClass = classPool.get("com.fasterxml.jackson.databind.node.BaseJsonNode");
报错具体原因不详,感觉应该是版本问题。欢迎大家讨论。
参考文章
https://blog.csdn.net/2201_75528722/article/details/133093643
https://stackoverflow.com/questions/23652765/classpool-get-throwing-notfoundexception-on-class-that-clearly-exists
https://blog.csdn.net/weixin_43900321/article/details/105189867