問題タブ [bcel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
240 参照

java - Javaでクラスファイルを解析する方法は?

Java でクラス ファイルを解析するにはどうすればよいですか。このコードでは、現在のクラス ファイル calles bcel を解析しますが、たとえば (netbeans/src/filename.class) などの他のパッケージ内の他のクラス ファイルを解析したい場合は、どうすればよいですか?どのようにすればよいですか?パスでクラスファイルを解析できますか? このコードは同じ (現在のクラス ファイル) にのみ適用できますが、任意のクラス ファイルをそのパスで解析する方法が必要です。

0 投票する
3 に答える
88 参照

java - パッケージ + クラス名を .class ファイル名に変換

ファイルを分析するプログラムを書いてい.classます。パッケージとクラス名を出力に添付したい。

私の計画は、パッケージとクラス名を入力として取り、対応する.classファイルを見つける関数を作成することです (したがって、ユーザーはそれを入力する必要がなく、間違いを犯すことはありません)。 「BCEL のClassParserコンストラクターの引数として使用できるデータを教えてください」(ファイル名、または zip ファイルの名前と zip ファイル内の名前のいずれか) と読みます。

どうすればいいですか?Javaにはそれを行うものが付属していますか?名前解決は a のコンテキストで行われることを理解しているCLASSPATHので、ユーザーはおそらくそれらのいずれかも提供する必要があります。それはいいです。

注: ソリューションでは、ファイルからコードを実行しないでください。.classバイトだけです、奥様;-)

0 投票する
0 に答える
104 参照

java - クラスを BCEL に置き換える

BCEL を使用して、SomeClass のメソッドへのすべての呼び出しを SomeOtherClass のメソッドへの呼び出しに置き換えるコードを書いています。

現在、私の理解では、次の方法でこれを行うことができます。

  1. 命令リストの反復
  2. invokevirtualすべての、invokestaticまたはinvokespecialSomeClass を参照する命令の検索
  3. それらを SomeOtherClass を参照する適切な invokeX に置き換えます

これには、多くの呼び出しを書き直す必要があり、少なくとも 3 つの異なるケース ( と呼び出し) を処理する必要がinvokevirtualありますinvokestaticinvokespecial代わりに、定数プールを操作し、SomeClass を指すすべての定数を SomeOtherClass に置き換えることによってそれを行うことは可能ですか? もしそうなら、どのように?

0 投票する
2 に答える
816 参照

java - cglib プロキシ クラス インスタンスのバイトコードを取得するには?

BCEL を使用して、この方法で cglib 拡張オブジェクトのバイトコードを取得しようとしています。

しかし、私は得ています:

Enhanced オブジェクトからバイトコードを取得するにはどうすればよいですか?

0 投票する
1 に答える
374 参照

java - Apache Byte Code エンジニアリング ライブラリ (bcel) でローカル変数のデータ型を特定する

Javaクラスファイルを読み取るためにApache bcelライブラリを使用しています。呼び出しから特定のメソッドのローカル変数名を識別することができorg.apache.bcel.classfile.Method.getLineNumberTable()ます。

ただし、詳細にはローカル変数のデータ型関連の詳細は含まれません。また、変数のデータ型を取得する他の方法も見つかりませんでした。少し助けていただければ幸いです