“__JVM_DefineClass__”作为类加载器位置意味着什么?

rpg*_*711 5 java eclipse jvm classloader

我正在调试eclipse远程调试动态编译加载类时无法加载源代码的原因。我看到的论点-verbose:class是我的动态编译的类文件来自__JVM_DefineClass__. 我认为这意味着它们来自 JVM 堆空间本身,因为我让编译器将编译后的字节输出到“文件管理器”中,该文件管理器将编译后的字节缓存在内存中。

似乎调试时源代码可查看的唯一方法是,如果我在源代码查找路径中指定实际加载的类来自的位置...并且如果我指定该类所在的目录,则似乎不起作用正在编译类。我觉得如果我将编译的字节保存到磁盘,源加载可能会起作用。

那么,什么__JVM_DefineClass__意思呢?我的假设正确吗?

Bre*_*ail 1

这意味着当 ClassLoader 调用 DefineClass 时,ProtectionDomain 中的 CodeSource 中未包含位置 URL。这可能是因为该类是动态生成的,但也可能是因为 ClassLoader 在定义该类时根本没有提供信息。