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