2016-11-02 13 views
0

jarファイルから1つのクラスファイルを編集する必要があります。依存関係のない既存のjarファイルから編集した単一のクラスファイルのコンパイル

私はjarからクラスファイルを正常に抽出しました。私はそれを逆コンパイルして、変更する必要があるロジックを見つけました。それは私が持っていないとget(NetBeansの iharder)する場所を知っていないライブラリをインポートするため

はしかし、私は、このクラスファイルを再コンパイルすることができませんでしだ。

必要なファイルはすべてjarファイル内にあるはずですか?この目的のために瓶を使用できますか?

私はJavaの包括的な構文の多くを理解していないので、パッケージまたはjarファイル構造に関連した何かが私の頭の上に行くかもしれない...

+0

*必要なファイルはすべてjarファイル内にあるはずですか?間違っていますか? –

+0

@RobbyCornelissen説明できますか?依存クラスを解決できるようにするには、jarのクラスファイルで十分です。 – 4castle

+0

[このような質問](http://stackoverflow.com/questions/14069082/how-to-change-already-compiled-class-file-without-decompile)に役立つかもしれません。 –

答えて

0

JVMだけで、実行時に依存関係を見つけることができる必要があります。しばしば、それらを使用するjarファイルにバンドルされるのではなく、標準の場所(クラスパス)にインストールされます。しかし、理論的には、実行時に依存関係をダウンロードし、クラスローダー経由でロードするようなことさえできます。

とは別に、逆コンパイルと再コンパイルは、損失が大きくエラーが発生しやすいプロセスなので、しばしば良い考えではありません。これは一般的に単純なケースでのみ動作し、あなたが発見したように制限があります。

Javaバイトコードを理解している場合は、クラスをKrakatauで逆アセンブルし、.jファイルを編集してから再組み立てして編集できます。これにより、コンパイルすることなくクラスファイルを編集することができます。つまり、依存関係は必要ありません。クラスがどれほど複雑であっても問題なく動作し、難読化されたクラスでも動作します。

関連する問題