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

时间:2014-04-18 14:42:40

标签: java eclipse jvm classloader

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

在调试时,如果我在源查找路径中指定了实际加载的类的来源,那么源是可以查看的唯一方法......如果我指定了它,它似乎不起作用从中编译类的目录。我觉得如果我将编译的字节保存到磁盘,源加载可能会起作用。

那么,__JVM_DefineClass__是什么意思?我的假设是否正确?

1 个答案:

答案 0 :(得分:1)

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