当前位置: 代码迷 >> 综合 >> javassist 在 spring boot jar中启动报错:javassist.NotFoundException
  详细解决方案

javassist 在 spring boot jar中启动报错:javassist.NotFoundException

热度:74   发布时间:2024-02-28 09:33:29.0

由于需要在Springboot项目中动态替换一个方法的实现,所以引入了javassist,然而在IDEA中开发时一切正常,但是java -jar启动就报错:Caused by: javassist.NotFoundException:

在stackoverflow: https://stackoverflow.com/questions/48437113/javassist-not-working-with-spring-boot-jar 看到有人遇到了同样的问题,大致就是两种启动方式使用不同的ClassLoader导致javassist默认的classpath中找不到对应的类,我们需要手动把当前的ClassLoader加载到ClassPool中,怎么做到这点呢,其实很简单,只需要一行代码:classPool.appendClassPath(new LoaderClassPath(Thread.currentThread().getContextClassLoader()));添加以后本地IDEA中开发也可以正常使用。完整代码如下:

ClassPool classPool = ClassPool.getDefault();
//将当前ClassLoader添加到ClassPath
classPool.appendClassPath(new LoaderClassPath(Thread.currentThread().getContextClassLoader()));
//Your Code...
  相关解决方案