問題タブ [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 投票する
1 に答える
89 参照

java - JavaでBCELを使用してプロキシを強制する

次のような呼び出しを置き換える方法はありますか

方法がわからないため、BCELを使用しています。InstructionList を変更する必要があることは理解していますが、それをスキャンする方法がわかりません。また、どのオペコードを探すべきかもわかりません。

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

java - InvokeInstruction(BCEL)によって呼び出されたメソッドを判別する方法は?

BCELライブラリ内の特定のInvokeInstructionの呼び出し先のMethodGenを判別しようとしています。問題は、InvokeInstructionを使用して、呼び出そうとしているMethodGenに到達する方法がわからないことです。

プログラムのメインメソッド用のBCELMethodGenオブジェクトがある場合は、命令のリストを調べて、InvokeInstructionsであるものを見つけることができます。

BCELのドキュメントのいくつかは素晴らしいものであり、他の部分はちょっと欠けています。InvokeInstructionを呼び出されているメソッドのMethodGenにリンクする方法についての提案はありますか?

それが物事を単純化するならば、私は今のところプログラムがポリモーフィズムを持っていないと仮定することができます。ある時点で私はそれに対処しなければならないでしょうが(保守的に)。


明確化:これを行うための直接的なルート(例invoke.getCalledMethodGen())がないことはわかっていますが、invoke命令(例:メソッドのFQNまたは同等のもの)からリンクできる十分な個別の情報を取得できる方法があるかどうか疑問に思っています呼び出されているメソッドに戻ります。

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

generics - BCEL を使用してクラスの一般的な情報を取得するにはどうすればよいですか?

BCEL 6.0-SNAPSHOT を使用して CounterPersistence クラスの一般的な情報 ( Counterクラス)を取得したいと考えています。署名は次のようになります。

次のコードを使用してバイトコードを読み取ります

しかし、署名を解析して Counter 型を取得できるようにするコードを書くのに失敗しています。考え?

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

java - Javaは、.classのインポートが何であるかを調べます

クラスにどのようなインポートがあるかを調べる方法はありますか?

この質問では:Jon Skeetはリフレクションを使用してこれを行うことはできないと言っていますが、

コンパイルされたコード内で使用されているすべてのタイプを検索したい場合、それは少し異なる問題です。バイトコードを分析する方法としてBCELを検討することをお勧めします。

これが私が知りたいことです。

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

java - Java in C 用の BCI ライブラリ

JVMTI エージェントで使用する C または C++ の Java 用の BCI (Bytecode Instrumentation) ライブラリを探しています。

最良のシナリオは、純粋な C でのASMBCELのようなものです。

java_crw_demo私がこれまでに見つけた最も近いものは、Kelly O'Hair によって数年前に書かれ、それ以来 Sun/Oracle のチュートリアルで使用されているデモのみです。

他に何か知っていますか?

java.lang.Objectいくつかの理論的根拠:のすべての直接サブクラスでゲッター メソッドを追加し、このゲッターをオーバーロードする計測ツールを構築していますObject。このため、Java エージェントを使用できません。また、複雑さと速度の理由から、インストルメンテーションを実行するためにセカンダリ JVM を生成することは避けたいと思います。

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

java - プログラムでJavaファイルを作成する方法

.java Filesカバーターとして機能するutil-classを作成しています-ジェネレーター。

このutil-classはAConverter.java'を生成します(以下のサンプルを参照)。util-classの

記述方法を知りたいです。
私はグーグルで検索し、apachebcelを使用することをお勧めします。.java Fileしかし、からを記述Stringしてプログラムで機能させる例を見つけることができませんでした。



期待は...

上記のクラスAConverterは、新しいUtilクラスによって生成されます。

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

java - Java クラスへのフィールドの追加

CGLib、ASM、BCEL (アスペクト)、および Javassist を使用して、実行時にクラスにフィールドを追加することを検討しました....

頭を整理すると、これらのバイトコード操作者は実際のクラスを更新せず、ユーザーが変更をダンプすることしかできないようです (CGLib や writeFile メソッドの場合と同様)。(a)(BCELでInputStreamを実行するのではなく)クラスをロードし、(b)クラスを更新するソリューションを見つけることを望んでいました。

多分これは正常ですか?人々は通常、プロキシを作成し、プロキシを渡しますか?

私がやりたいことは、特定の注釈を持つフィールド (プロパティではない) を探すフレームワークにオブジェクトを渡す前に、フィールド (注: get/set メソッドによるプロパティではない) を追加することです。したがって、「クライアント」は、追加のフィールドを挿入したいターゲット クラスを作成しています。これらのオブジェクトを操作したいサービス層への AOP 呼び出しをインターセプトします。

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

java - クラスローダの使用時にリソースをロードするにはどうすればよいですか?

JarFile と JarURLConnection を使用して、jar ファイルからファイルをロードしています。次に、クラスを取得し、BCEL (ByteCode Engineering Library、Apache ライブラリ) 経由でロードします。BCELで一部のクラスを少し変更しているため、クラスローダーを直接使用することはできません。クラスをバイト単位で bcel ローダーにロードする必要があります。ただし、ロードしているクラスの 1 つがリソースを参照しています。このリソースは jar 内にあるため、ファイルを取得できます (JarFile のエントリを反復処理するときは、通常のファイルを無視し、後でロードするためにクラス ファイルを取得します)。しかし、クラスがファイルをリソースとしてロードするため、ファイルを持っているだけでは何の役にも立ちません。jar からそのリソースを取得する方法はありますか (それを取得して byte[],

ここにはたくさんのものがあります。何か混乱している場合は、コメントで尋ねてください。何か間違ったことを言った、または何かを完全に見逃した可能性があります:)ありがとう

ここで、私のクラス ローダーを少し示します (ClassLoader を拡張します)。

現在、「LOADING RESOURCE: filename」が出力されていますが、MalformedURLException が返されます (プロトコル atm はなく、ファイル パスだけです。これは真に有効なパスではありませんが、それを Handler に渡そうとするだけです)。以下のクラス)。

class Handler extends URLStreamHandler {

}

/*入力ストリームを取得するメソッド*/ は実際のコードで設定されていますが、ここでは関係ありません。それで、これに関するさらなるアイデアはありますか?

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

java - Javaで静的に参照されるメソッドを置き換える

String を返すだけのメソッドを持つ以下のようなクラスがありますが、自分でハードコーディングせずに、別のクラスから返されるものを変更したいと考えています。

これを行う方法はありますか?BCEL を試してみましたが、戻り値は変わらないようです。

編集:これはmod用です。既存のコードを変更しないことで、完全に独立させようとしています。

ありがとう。