对于我的硕士论文,我正在编写一个 Eclipse 插件,用于在调试时可视化变量。我投入了大量精力来创建自定义“爬虫”,以便轻松访问 IJavaObject、IJavaType 和 IJavaValue 等。问题是,我没有看到任何在内存中获取真正的底层对象的可能性,而只是 IJavaObject 包装器。
例如如果我有一个 java.awt.Color,我可以获取 IJavaObject 并使用我的爬虫调用方法(因此通过 JDT 的笨拙的 sendMessage)。因此我能够查询单个 R、G 和 B 值,构建我自己的 Color 对象并可以直接显示颜色。 但是当涉及到 java.awt.Image 我想直接在某个地方绘制时,例如,我不能这样做。我可以访问 IJavaObject 和我的爬虫,并且可以调用一些方法(顺便说一句,仅限那些接受基本类型作为参数的方法),甚至查询私有(private)字段,但我需要真正的 Image 对象,而不仅仅是它的宽度、高度或 ImageObservers。
简而言之: 是否有可能访问 IJavaObject 的真实底层对象?
提前致谢。
最佳答案
真实对象与调试代码位于不同的 JVM 中,这意味着无法访问它。
在最坏的情况下,对象可能包含对 native 对象(可能是图形句柄)的引用,这些引用仅在对象运行的 JVM 中有意义。
关于java - Eclipse调试插件: Access underlying java object from IJavaObject of JDT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19021131/