英文:
Replace Java class in overall code with custom class loader
问题
我有一个Java应用程序,我想创建一个类加载器(Class Loader)来将所有Java类的调用/实例替换为另一个类。
我创建了这个类加载器:
public class CustomClassLoader extends ClassLoader {
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
if (name.equals("qualified.name.of.original.Class")) {
return super.findClass("qualified.name.of.New.Class");
}
return super.findClass(name);
}
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {
if (name.equals("qualified.name.of.original.Class")) {
return super.loadClass("qualified.name.of.New.Class");
}
return super.loadClass(name);
}
}
然后我使用-Djava.system.class.loader=qualified.name.of.CustomClassLoader
启动我的应用程序。
但是它不起作用,原始的类仍然像往常一样被使用。我如何实现预期的结果?
英文:
I have a Java application and I want to create a Class Loader to substitute all invokation/instance of a Java classes to another one
I made this class loader:
public class CustomClassLoader extends ClassLoader {
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
if (name.equals("qualified.name.of.original.Class")) {
return super.findClass("qualified.name.of.New.Class");
}
return super.findClass(name);
}
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {
if (name.equals("qualified.name.of.original.Class")) {
return super.loadClass("qualified.name.of.New.Class");
}
return super.loadClass(name);
}
}
Then I start my application with -Djava.system.class.loader=qualified.name.of.CustomClassLoader
But it doesn't work, the original class is used as usual. How can I achieve the result?
专注分享java语言的经验与见解,让所有开发者获益!
评论