//ClassPool:CtClass对象的容器
ClassPool pool = ClassPool.getDefault();
//通过ClassPool生成一个public新类Emp.java
CtClass ctClass = pool.makeClass("javassist.demo.MyCC");
//添加自定义方法
CtMethod ctMethod = new CtMethod(CtClass.voidType,"printInfo",new CtClass[]{},ctClass);
//为自定义方法设置修饰符
ctMethod.setModifiers(Modifier.PUBLIC);
//为自定义方法设置函数体
StringBuffer buffer2 = new StringBuffer();
buffer2.append("{\nSystem.out.println(\"begin!\");\n")
.append("}");
ctMethod.setBody(buffer2.toString());
ctClass.addMethod(ctMethod);
执行以下代码报错
ctClass.toClass();
大神求解决
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
StackWalker cannot be resolved to a type
StackWalker cannot be resolved to a type
StackWalker cannot be resolved
StackWalker cannot be resolved to a variable
StackWalker cannot be resolved to a type
StackWalker cannot be resolved to a type
The method dropLookupMode(int) is undefined for the type MethodHandles.Lookup
The method defineClass(byte[]) is undefined for the type MethodHandles.Lookup
at javassist.util.proxy.DefineClassHelper$SecuredPrivileged$3.<init>(DefineClassHelper.java:53)
at javassist.util.proxy.DefineClassHelper$SecuredPrivileged.<clinit>(DefineClassHelper.java:38)
at javassist.util.proxy.DefineClassHelper.<clinit>(DefineClassHelper.java:177)
at javassist.ClassPool.toClass(ClassPool.java:1120)
at javassist.ClassPool.toClass(ClassPool.java:1083)
at javassist.ClassPool.toClass(ClassPool.java:1041)
at javassist.CtClass.toClass(CtClass.java:1278)
at javassist.demo.GenerateNewClassByJavassist.main(GenerateNewClassByJavassist.java:46)