我正在调试为什么eclipse在远程调试动态编译和加载类时无法加载源代码的原因。我看到-verbose:class
参数,我的动态编译的类文件来自__JVM_DefineClass__
。我认为这意味着它们来自JVM堆空间本身,因为我让编译器将编译后的字节输出到“FileManager”中,将编译后的字节缓存在内存中。
在调试时,如果我在源查找路径中指定了实际加载的类的来源,那么源是可以查看的唯一方法......如果我指定了它,它似乎不起作用从中编译类的目录。我觉得如果我将编译的字节保存到磁盘,源加载可能会起作用。
那么,__JVM_DefineClass__
是什么意思?我的假设是否正确?
答案 0 :(得分:1)
这意味着当ClassLoader调用defineClass时,位置URL未包含在ProtectionDomain的CodeSource中。这可能是因为该类是动态生成的,但也可能是因为ClassLoader在定义类时根本没有提供信息。