ソケットを介してクライアントアプリケーションにシリアル化されたJavaオブジェクトを送信するagentmainを使用して、リモートプロセスにjavaagentをアタッチしました。ObjectInputStreamデータをデバッグ/表示するにはどうすればよいですか?
ストリームの書式設定にバグがあります。私はwriteExternal実装でエラーが発生しているかどうか、またはそれがJavaバージョンと関係があるかどうかわかりません。私はJava 1.6 32/64ビットのさまざまな組み合わせを試しています。
基本的に、オブジェクトストリームは例外が見つかりませんでしたが、出力されるパッケージ名はorg.mycode.bebのようなものです。beb部分は自分が所有するパッケージとは無関係で、その文字列を持つコードまたはライブラリには何もありません... beb
エンコード形式の不一致または32/64ビットの語長の問題のために発生するエンコードの問題であると疑われていますが、私はこれらの分野での経験はありません。
私は、コードの問題を追跡するためにデバッガを開くのによく慣れていますが、シリアライゼーションとバイトフォーマットでこのような問題を診断する経験はあまりありませんので、推奨されるデバッグ方法を教えてください。現在org.mycode.b.e.bが見つかりませんクラスをスロー
objectInput = new ObjectInput(inputStream);
Object object = objectInput.readObject();
:
は、私のようなコードを使用するクライアントの制御/コンパイル/ソースを持っています。
シリアライズされたストリームをファイルに保存して見てみようと思っていましたが、それは正しい角度ですか?
おそらく難読化を使用していますか? – AlexR
これは難しいことではないintellijからクライアントを実行していますが、エージェントのjarコードは...意味があり、この切断を忘れてしまったので、面白いです。この場合、私は今すぐ確認します。 – user858203
@ALexR - チップをありがとう。あなたは正しかった。私は自分の質問を編集/削除する必要があるのではないかと思うので、本当にあなたの答えを意味し、根本的な問題はClassNotFoundExceptionsにのみ関連し、クラスパス上ではなく、obfuscatorが働いていることを知っています。 – user858203