2016-05-03 5 views
0

Googleプロトコルバッファーのバージョンによって生成されたjar myGenerated.jarがあります(バージョンがわからない)。そのjarには、名前空間com.foo.barのクラスへの参照が含まれています。クラスがネームスペースcom.bazにあるように変更したいと思います。残念ながら、私はjarファイルを生成するために使用された.protoファイルを、忘れてしまったように見えません。protobuf jarの名前空間を.protoなしでアップグレードする

生成されたクラスの名前空間を.protoなしで変更する方法はありますか?

(以前の回答に簡単につながるため)既存のjarファイルから.protoをリバースエンジニアリングすることはできますか?

答えて

1

プロトコルバッファリフレクションAPIを使用して、元の.protoファイルの内容をリバースエンジニアリングできる必要があります。関心のあるメッセージタイプMyMessageごとに、MyMessage.getDescriptor()を呼び出して、hereというAPIを使用して記述子を調べて、存在するフィールドを判別するなどができます。 .protoファイルの内容を逐語的に(おそらくコメントではなく)リカバリできるとは思いませんが、フィールド名とタグ番号で少なくともすべてのタイプを回復できます。 MyMessage.getDescriptor().getFile().toProto()のようなものは、.protoファイルから利用可能なすべての情報を提供するはずです。

0

googleまたはduckduckに入力すると、java decompilerが表示されます。ここで

いくつかの良いhttp://jd.benow.ca/

は、元のJavaファイルを取得するには、スタンドアロンまたはEclipseプラグインを選択しています。

1

dirtyJOEでバイトコードを編集し、すべてのパッケージ名(およびフォルダ、階層的にjarで構造化されている場合)を変更します。

関連する問題