gpt4 book ai didi

java - 使用ClassLoader.defineClassCond从通过ASM创建的类的字节中获取Class对象,NoClassDefFoundException?

转载 作者:行者123 更新时间:2023-12-01 15:42:38 26 4
gpt4 key购买 nike

我通过获取基类的字节并通过自定义类适配器接受它们来生成一个类。当我对作为基类的产品生成的字节调用定义类时,我收到此错误:

Caused by: java.lang.NoClassDefFoundError: com/example/MyClassBase
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
... 24 more
Caused by: java.lang.ClassNotFoundException: com.example.MyClassBase
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 26 more

基类已由 URLClassLoader 从 jar 中加载。 DefineClass 中是否有一些底层方法调用因无法找到加载的类而引发异常?我该如何解决这个问题?

请记住,以不同的方式加载基类是不切实际的。作为问题的参数,我会说假设它必须通过 URLClassLoader 从另一个 jar 加载。

最佳答案

我认为您正在尝试通过无法看到该类的 ClassLoader 加载依赖于 com.example.MyClassBase 的修改后的字节码。当您创建自己的 ClassLoader 实例来加载修改后的类时,您应该是 chaining it to an existing ClassLoader using its constructor建立加载器的父/子层次结构,这有助于避免这个问题。

关于java - 使用ClassLoader.defineClassCond从通过ASM创建的类的字节中获取Class对象,NoClassDefFoundException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780168/

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