使用特定的 ClassLoader 获取 CtClass
get CtClass using specific ClassLoader
我有这样的 class 结构:
package com.mydomain.myproject;
public class Outer{
public class Inner{
//some code
}
}
现在,我可以使用以下方法获得内部 class 的 CtClass
:
ClassPool pool=ClassPool.getDefault();
CtClass innerCt=pool.getCtClass("com.mydomain.myproject.Outer$Inner");
如果这些 class 是由特殊的 ClassLoader
加载的,就会出现问题。
ClassPool#getCtClass
失败,因为它使用的 ClassLoader
不知道 class.
我得到以下异常:
javassist.NotFoundException: io.github.jdiscordbots.nightdream.commands.Eval$Sandbox
at javassist.ClassPool.get(ClassPool.java:430)
at javassist.ClassPool.getCtClass(ClassPool.java:495)
at <my classes>
如何为 ClassPool#getCtClass
指定 ClassLoader
?我能以某种方式设置 ClassPool
的 class 加载器吗?我注意到有一个 getClassLoader()
方法,但似乎没有 setter.
我有这样的 class 结构:
package com.mydomain.myproject;
public class Outer{
public class Inner{
//some code
}
}
现在,我可以使用以下方法获得内部 class 的 CtClass
:
ClassPool pool=ClassPool.getDefault();
CtClass innerCt=pool.getCtClass("com.mydomain.myproject.Outer$Inner");
如果这些 class 是由特殊的 ClassLoader
加载的,就会出现问题。
ClassPool#getCtClass
失败,因为它使用的 ClassLoader
不知道 class.
我得到以下异常:
javassist.NotFoundException: io.github.jdiscordbots.nightdream.commands.Eval$Sandbox
at javassist.ClassPool.get(ClassPool.java:430)
at javassist.ClassPool.getCtClass(ClassPool.java:495)
at <my classes>
如何为 ClassPool#getCtClass
指定 ClassLoader
?我能以某种方式设置 ClassPool
的 class 加载器吗?我注意到有一个 getClassLoader()
方法,但似乎没有 setter.