gpt4 book ai didi

java - 方法内类加载器的上下文

转载 作者:行者123 更新时间:2023-11-30 04:49:18 27 4
gpt4 key购买 nike

我编写了自定义类加载器,它从文件系统加载 jar 文件。customClassLoader 重写加载和查找方法及其工作原理如何使类加载器定义后的所有代码都能在方法执行的上下文中与 customClassLoader 一起使用。在方法 f1() 中运行此代码后,我收到此错误 java.lang.NoClassDefFoundError org.xml.dd.myclass

如何定义在方法执行的上下文中我将使用 customClassLoader

Public void execute()
{

ClassLoader customClassLoader= new customClassLoader();
try
{
Class.forName("org.xml.dd.myclass", true, xdmCustomClassLoader);
}
catch (ClassNotFoundException e2)
{
// TODO Auto-generated catch block
e2.printStackTrace();
}
Thread.currentThread().setContextClassLoader(customClassLoader);
………………….
F1();
F2();
}

最佳答案

必须显式使用上下文类加载器。正常的 new 操作等将使用拥有相关代码的类的类加载器。在下面的示例中,Executor 是一个类,它将成为您希望由自定义类加载器负责执行的所有代码的入口点。使用类加载器加载该类并调用其方法 run。您应该实现run,以便它执行需要由您的类加载器负责运行的所有代码。

public class Executor {
public void run() {
final MyInterface x = new MyClass();
x.f1(); x.f2();
}
}

public class Test {
public static void main(char[] args) throws Exception {
final ClassLoader customCl = new customClassLoader();
final Executor e =
(Executor) Class.forName("Executor", true, customCl).newInstance();
e.run();
}
}

关于java - 方法内类加载器的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210047/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com