javassist is throwing null pointer in CtMethod.make com.company.test is the package of the Activator and Joe
public class Activator implements BundleActivator {
public Class<?> creerClasse() {
CtClass toGenerateClass;
ClassPool pool;
pool = ClassPool.getDefault();
try {
Class c;
c = Class.forName("com.company.test.Joe");
pool.appendClassPath(new ClassClassPath(c));
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
pool.importPackage("com.company.test");
toGenerateClass = pool.makeClass("Test118");
try {
toGenerateClass
.addMethod(CtMethod
.make("public void afficher (com.company.test.Joe msg) { System.out.println(msg); } ;",
toGenerateClass));
} catch (CannotCompileException e) {
e.printStackTrace();
}
try {
return toGenerateClass.toClass();
} catch (CannotCompileException e) {
e.printStackTrace();
return null;
}
}
public void start(BundleContext context) throws Exception {
Class<?> genClass = creerClasse();
Class<?> c = Class.forName("com.company.test.Joe");
for (Method me : genClass.getDeclaredMethods()) { // test print, ok
System.out.println(me);
}
Method method = genClass.getDeclaredMethod("afficher", c);
Joe person = new Joe();
person.setId(17);
method.invoke(genClass.newInstance(), person);
}
}
and when i instansiate pool with pool = new ClassPool(true); it throws java.lang.NoClassDefFoundError: com/company/test/Joe in getDeclaredMethod
Aucun commentaire:
Enregistrer un commentaire