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

由于需要在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...

未经允许不得转载:鹞之神乐 » javassist 在 spring boot jar中启动报错:javassist.NotFoundException:

赞 (3) 打赏

评论

8+1=

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏