我从网络获取字节码。我将字节数组转换为类类Java的字节码
package l2soft.utils;
public final class CustomClassLoader extends ClassLoader {
public static CustomClassLoader _instance;
public static CustomClassLoader getInstance() {
return _instance;
}
public void defineCustomClass(byte[] bytecode) {
Class<?> clazz = defineClass(null, bytecode, 0, bytecode.length);
resolveClass(clazz);
}
}
但是当应用程序启动时,无法找到派生类。
The import test.Test1 cannot be resolved
(与收到类compilled)
注:我不知道类文件名。我并不需要申请一类,服务器本身发送
UPD:
package l2soft.utils;
import java.util.HashMap;
import java.util.Map;
public final class CustomClassLoader extends ClassLoader {
private Map<String, Class<?>> cache;
public static CustomClassLoader _instance;
public static CustomClassLoader getInstance() {
return _instance;
}
public CustomClassLoader(ClassLoader parent) {
super(ClassLoader.getSystemClassLoader());
_instance = this;
cache = new HashMap<String, Class<?>>();
}
public void defineCustomClass(byte[] bytecode) {
Class<?> clazz = defineClass(null, bytecode, 0, bytecode.length);
resolveClass(clazz);
cache.put(clazz.getName(), clazz);
}
@Override
public synchronized Class<?> findClass(String name) throws ClassNotFoundException {
Class<?> result = cache.get(name);
if(result == null)
super.findClass(name);
return result;
}
}
这是我的自定义类加载器。 SomeClass通过这个类加载器和tes.Test1加载。但我看到错误:import test.Test1无法解析。这CustomClassLoader设置为默认加载器(-Djava system.loader = l2soft.utils.CustomClassLoader)
你是下载所有必需的课程还是只下载一个课程? – MadProgrammer 2012-08-16 23:34:51
'-verbose:class'是你的朋友遇到麻烦。 – biziclop 2012-08-17 10:27:42