51,410
社区成员
发帖
与我相关
我的任务
分享
public static void ReloadClasses() throws Exception {
loader = new MyClassLoader(getSystemClassLoader());
loader.findFilesByEndStr(loader.BasePath +"ExternalClasses"+loader.SP);
Utils.InitMessagePack();
Utils.initKryo();
for(int i=0;i<loader.ClassFileList.size();i++)
{
String javaname = loader.ClassFileList.get(i);
loader.loadClass(javaname); //load from file first
if(javaname.contains("MessageEntity"))
loader.RegisiterMsgs(javaname);
}
}
public void RegisiterMsgs(String name)
{
Class<?> klass = findLoadedClass(name);
Utils.kryo.register(klass);
Utils.myPacker.register(klass);
}
@Override
public Class loadClass(String ClassName) throws ClassNotFoundException {
// TODO Auto-generated method stub
Class c = null;
if(ClassFileList.contains(ClassName))
{
c = findLoadedClass(ClassName);
if(c == null)
{
byte []data;
try {
data = GetClassByte(ClassName);//找到外部class文件
c = defineClass(ClassName, data, 0, data.length);
} catch (IOException e) { // TODO Auto-generated catch block
e.printStackTrace();
}
}
else {
return c;
}
}
else
{
return super.loadClass(ClassName);
}
return c;
}