2

私はいくつかの問題でJavaEclipseプロジェクトをデバッグしようとしています!

インデックスメソッドを使用してより高速なリフレクション呼び出しを行うために、CGLIBの使用を開始しています。

FastClass fastClass = FastClass.create(getClass());
int index = fastClass.getIndex("methodName", new Class[] { Object.class });
fastClass.invoke(index, this, new Object[] { obj } );

fastreflectionメソッドによって呼び出されるクラスにブレークポイントを設定しようとすると、これが日食の出力になります。

ブレークポイント出力

行番号の生成時にコンパイラオプションを変更しようとしましたが、結果がありません。

問題を再現したEclipseプロジェクト(Junoバージョンでビルド)もアップロードします!!

http://www.filefactory.com/file/4zryz3gjgbyh/n/FastDebug.rar

ありがとう!

4

1 に答える 1

0

問題を「解決」(理解) しましたが、Eclipse の問題ではありません。プログラムを起動すると、次の行が表示されます: FastClass.create(ReflectionTarget.class); コンパイルされたクラスのまったく新しいバージョンを作成し、クラスファイルから重要でないものをすべて削除して「高速」にします。これには、すべての行番号/デバッグ情報が含まれます。これは、ブレークポイントを設定できないことを意味します。

http://cglib.sourceforge.net/xref/net/sf/cglib/core/package-summary.html

javadoc はなく、ソースを読む必要がありますが、これは問題ではなく、高速なリフレクションを行うためのこのメソッドの機能であることを理解しました!

于 2012-10-18T06:38:49.623 に答える