エラーがいっぱいで、自分のコンピューターでコンパイルすらできない Java クラスがあります (この人がどのようにコンパイルしたのかわかりません) が、何とか動作します。通常のツールでは再コンパイルできないので、コンパイルできるものを探していますが、エラーを無視するか、逆コンパイルしてファイルのソースを表示するプログラムで開くことができると思います。 、編集できるようにしてから、自動的に再コンパイルします。JD-GUI に似ていますが、ファイルを編集できます。
2 に答える
そのようなツールが Java 用に存在するとは思いません。または、少なくとも、問題を解決するのに効果的な形ではありません.
より生産的なアプローチは、これらのコンパイル エラーの原因を突き止めて修正することです。コンパイルすべきファイルで大量のエラーが発生する場合(たとえば、他の人のためにコンパイルしたため)、次のいずれかである可能性があります。
- ビルド クラスパスが正しくないため、コンパイラは外部依存関係を見つけることができません。
- 外部依存関係を含むいくつかの JAR ファイルがありません。
- 一部の JAR ファイルのバージョンが間違っています。
- 間違ったバージョンの Java SDK を使用しています。
これらはすべて簡単に修正できます...問題が何であるかがわかれば.
コンパイル エラーのサンプルを提供していただければ、これを確認したり、より適切な診断を提供したりできます。
現在の世代の逆コンパイラは、コンパイル可能なソース コードを生成するのが得意ではありません。さらに、このアプローチでは、上に挙げた問題のいずれも解決されません。(仮にそうだったとしても、逆コンパイルされたソース コードをハッキングすることで、非常に深い穴に自分自身を掘り下げることになります。)
Java バイトコードは、実行可能コードに直接コンパイルされる言語よりも逆コンパイルがわずかに簡単ですが、Java 逆コンパイラは、特に複雑なコードになると効果がないことで有名であり、元のソース コードがジェネリックを使用している場合はなおさらです。結果として得られるソース コードは、元のコードとまったく関係がないことがよくあります。
そのクラスの人間が生成したバージョンのソース コードがある場合は、ファイルをリバース エンジニアリングするのではなく、それを修正することをお勧めし
.class
ます。ファイルが
.class
ある場合でも、サブクラスでそのメソッドの一部を拡張またはオーバーライドして、基本的にその動作を変更できる場合があります。このような継承の使用は常に可能であるとは限りませんが、サードパーティのブラックボックス コードで役立つことがよくあります...Javassistをご覧になることをお勧めします。これはバイトコード操作ライブラリであり、他の機能の中でも特に、既存のメソッドに Java ステートメントを挿入できるようにします。かなりの制約がありますが、場合によっては非常に役立ちます...