2017-01-31 5 views
2

Java ASMライブラリを使用しようとしていて、かなりの研究の後に、私が持っている問題の解決策が見つかりませんでした。Java ASMでのメソッドの削除

  • コンソールまたは変更されたクラスのコンパイル済みのバイトコードを格納するために指定されたクラスから
  • 印刷を完全に特定のメソッドを削除し、外部Jarファイルからクラスを読み込み:私は、次の操作を行い、アプリケーションを作るしようとしていますまたはCWは(メモ帳を使用してクラスファイルを編集した場合の表示をどのように似ている)ClassWriter

のインスタンスであることnew String(cw.toByteArray())からのようにコンパイルされたクラスの内容は、私はバイトコードとコンパイルさCLASを読むことができましたメソッドの削除はできません。私はどのような作業コードを見つけることができませんでしたが、コードを実装する方法についてはほとんど説明されていない部分コードしか見つかりませんでした。

+1

'new String(cw.toByteArray())'は意味をなさない。 – Holger

+0

内容を見るために 'new String(cw.toByteArray())'の代わりに、Textifierを使わないのはなぜですか?指定されたクラスのバイトコードをきれいにフォーマットされた方法でプリントアウトするので、クラスの読み込みがより簡単になります。 –

答えて

2

あなたはvisitMethodメソッドをオーバーライドするClassVisitorを実装して、特定のパターンを発見したときにsuper.visitMethodを起動せずに、このメソッドからnullを返すことができます。

この方法では、問題のメソッドはスキップされ、作成されたクラスファイルには追加されません。

+0

申し訳ありませんが、それほど長い時間がかかりましたが、どうやってそのようなクラスを使用し、同じクラスのデータを保持することができますか?私がクラスのバイトコードを読んだら、それは同じものを読みます。 – RubbaBoy

+0

ディスクに書き戻す必要があります。 –

+0

どうすればこのことをやりますか? (申し訳ありませんが、私はASMのノブのビットです)、私が達成しようとしていることについての良いチュートリアルがありますか? – RubbaBoy

関連する問題