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");更多参见: Getting Started with Javassist