2

私の修士論文では、デバッグ中に変数を視覚化するための Eclipse プラグインを作成しています。IJavaObject、IJavaType、IJavaValue などに快適にアクセスできるように、カスタム「クローラー」の作成に多大な努力を払いました。問題は、メモリ内の実際の基になるオブジェクトを取得する可能性は見られず、IJavaObject ラッパーだけであるということです。

たとえば、java.awt.Color がある場合、IJavaObject を取得し、クローラーでメソッドを呼び出すことができます (JDT の不器用な sendMessage を介して)。したがって、単一の R、G、および B 値を照会し、独自の Color オブジェクトを作成して、色を直接表示することができます。しかし、java.awt.Image に関しては、たとえば、どこかに直接描画したいのですが、これはできません。IJavaObject とクローラーにアクセスでき、いくつかのメソッド (プリミティブ型をパラメーターとして受け入れるメソッドのみ) を呼び出し、プライベート フィールドをクエリすることもできますが、幅、高さ、または ImageObservers だけでなく、実際の Image オブジェクトが必要です。

要するに: IJavaObject の実際の基になるオブジェクトにアクセスする可能性はありますか?

前もって感謝します。

4

1 に答える 1

2

実際のオブジェクトは、デバッグ コードとは別の JVM にあるため、アクセスする方法がありません。

最悪の場合、オブジェクトにネイティブ オブジェクト (おそらくグラフィックス ハンドル) への参照が含まれている可能性があります。これらは、オブジェクトが実行されている JVM でのみ意味を持ちます。

于 2013-09-26T08:47:29.827 に答える