gpt4 book ai didi

Java 动态类加载器抛出 ClassNotFoundException

转载 作者:行者123 更新时间:2023-11-30 08:14:07 25 4
gpt4 key购买 nike

我有一个项目,它有自己的类加载器。但是我在加载一些类时遇到了一个奇怪的问题。

基本上,它就像:

@Override
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
{
// do some magic
return myBrandNewClas;
}

但是发生的是,即使返回一个类,Class.forName(...) 仍然抛出一个 ClassNotFoundException(可以找到示例 here) .

另一个信息:返回的类名与请求的类名不同。

我开始怀疑它是不是JVM的安全锁(在Oracle JVM中测试过)。

谢谢!

最佳答案

forName 的代码是原生的,所以很难看清,但是我会说这个名字是经过检查的,因为传递正确的名字是有效的:

public class BBB
{
public static class a {

}

private static class MyCL extends ClassLoader
{
@Override
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
{
System.out.println("Hi, " + a.class.getName());
return a.class;
}
}

public static void main(String[] args) throws ClassNotFoundException
{
MyCL cl = new MyCL();

System.out.println(Class.forName("com.asg.util.BBB$a", true, cl));

}

关于Java 动态类加载器抛出 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29688772/

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