天天看點

關于javassist.NotFoundException

javassist可以用于反射擷取方法參數名稱,項目中用到,測試用例通過,當釋出到tomcat時報錯

javassist.NotFoundException: xxx.xxx.xxxService

ClassPool pool = ClassPool.getDefault();
CtClass cls = pool.get(clazz.getName());    // 此處報異常
           

javassist官網對此有如下說明:

The default ClassPool returned by a static method ClassPool.getDefault() searches the same path that the underlying JVM (Java virtual machine) has. If a program is running on a web application server such as JBoss and Tomcat, the ClassPoolobject may not be able to find user classes since such a web application server uses multiple class loaders as well as the system class loader. In that case, an additional class path must be registered to the ClassPool.

解決此異常的方法:

1.(推薦)

ClassPool pool = ClassPool.getDefault();
ClassClassPath classPath = new ClassClassPath(this.getClass());
pool.insertClassPath(classPath);
           

2.

ClassPool pool = ClassPool.getDefault();
pool.appendClassPath("E:\\xxx\\xxx\\target\\xxx_war\\WEB-INF\\lib\\xxx_jar-0.0.1-SNAPSHOT.jar");
           

轉自:http://www.codeweblog.com/%E5%85%B3%E4%BA%8Ejavassist-notfoundexception/