問題タブ [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.
java - 名前の変更
BCEL を使用して名前を変更するにはどうすればよいですか? これまでのところ、クラスの各メソッドを調べて、定数プールに新しい NameAndType 定数を作成し、古い NameAndType 定数をその定数に置き換えます。
これは機能するはずですが、私の逆コンパイラは、この後、定数プールが壊れていることを教えてくれます。ステップか何かが欠けていますか?
javascript - javascriptで実装されたJavaバイトコードリーダーはありますか?
Java で書かれたバイトコードを読み取るライブラリがたくさんあることは知っています。Javascript で実装されているバイト コード ライブラリを知っている人はいますか?
java - Java Service Provide APIはどのように機能するはずですか?
誰もがJavaServiceProviderで不快なブラシを持っているようです。これは、 META-INF / services / com.example.Interfaceのような名前のファイルで実行できますが、適切なXMLパーサーをロードする以外は誰も使用しません。 。Service Provider APIを使用するライブラリを操作しようとしていますが、実際にはインターフェイスを実装していないが、簡単に実装できるランタイム拡張クラス(cglibを使用)を提供できるようにトリックしています。
基本的に、実行する必要のある手順は次のとおりです。
- getResources(...)に応答し、「追加の」URLを返すカスタムクラスローダーを作成します
- また、そのクラスローダーフックgetResourceAsStream(...)を使用して、「追加の」リソースを要求されたときに、cglibで操作するクラスのリストを返します。
- 最後に、要求されたときにそのクラスローダーにそれらのクラスをロードさせます
しかし、ここで私は迷子になります。たとえば、ライブラリがそこにある実装者を判別しようとすると、getResources(...)を呼び出して、一連のURLを返します。ただし、getResourceAsStream(...)はURLを使用せず、「名前」を使用します。クラスパスに関連しているように見える名前。したがって、どこでも同じです。つまり、META-INF / services / com.example.Interfaceは、JARのMETA-INF / services / com.example.Interfaceと同じ「名前」を持っていますよね?どういうわけかこれがそれらの爆破されたXMLパーサーで機能することを除いて...
もちろん、これはすべて、ClassLoader.getSystemResources(...)、ClassLoader.getSystemResourceAsStream(...)などを使用するのではなく、ClassLoader.getSystemClassLoader()を呼び出すのに十分賢い/親切であることを前提としています。 ClassLoaderをフックして、偽のファイルを提供する方法はありません。
その場合、cglibで実行するまで待つのではなく、コードがMavenによってパッケージ化されているときに、BCELを使用してクラスファイルを操作できると思いますか?
java - Java: BCEL を使用してすべてのメソッドにデバッグ呼び出しを追加する
System.out.println() 呼び出しをすべてのメソッドの最初の行 (init および clinit メソッドを除く) に追加して、どのメソッドがいつ呼び出されるかを確認するために BCEL を使用しています。
これは私のコードatmです(いくつかの擬似を含む):
編集されたクラスはバイトコードでは問題ないように見えますが、何らかの理由でこのクラスは機能しません。私が間違っていることはありますか?
java - What bytecode library when controlling line numbers?
I need to generate new classes (via generation of java byte code) from existing classes. I will analyse the body (expressions) of the methods of a class. The expressions will determine what code I will generate.
For me it is importand to set the source file for the new classes (same as base java file) as well as controlling line numbers (when an exception is thrown the stacktrace should contain line numbers of the base java file).
Example: I have the file BaseClass.java. The compiler generates a BaseClass.class from this. I'd like to analyse this class file and generate the byte codes for a GeneratedClass.class. When at c an exception is thrown the stacktrace should contain "BaseClass.java line 3".
My question: are there libraries that support this requirement? Javassist, ASM or BCEL? What to use for this purpose? Hints how to do it or example code would be especially helpfull.
Edit: Hints what library NOT to use because the requirement can NOT be fullfiled would be helpfull, too :).
java - 実行時に(動的に)単純なPOJOクラス(バイトコード)を作成する
私は次のシナリオを持っています。
データベースに対してユーザーが入力したクエリを実行し、結果を返すツールを作成しています。
最も簡単な方法は、結果を次のように返すことです。List<String[]>
しかし、これをさらに一歩進める必要があります。
(実行時に)いくつかの名前でいくつかのPOJO(またはDTO)を作成し、そのフィールドとセッターおよびゲッターを作成し、返されたデータを入力してから、.class
生成されたファイルをユーザーに返す必要があります...
したがって、ここでのアイデアは、実行時に(動的に)単純なクラス(バイトコード)を作成する方法 です。基本的な検索を行って、Apache BCELを含む多くのライブラリを見つけましたが、もっと単純なものが必要だと思います...
それについてどう思いますか?
ありがとう。
java - BCEL ライブラリを使用して変数名を抽出する
こんにちは、bcel ライブラリを使用してバイトコードを読み取ります。変数名を抽出する必要がありました。
それを行う方法はありますか?
java - BCELを使用した呼び出し方法
このコミュニティには、BCELを使用したことがあり、Javaリフレクションの場合と同じようにBCELを使用したメソッドの呼び出し についてガイドしてくれる専門家がいますか。
注:あなたの答えをサポートするために、あらゆる種類の本やWebリファレンスが大きな助けになります。
これで、visitorという名前のインターフェイスにvisitInvokeInstruction()メソッドが含まれているのを見てきました。これ で 、これらの命令(スタック上にメソッドを形成した)を呼び出すことができるようになりました。
このコードが、私が欲しいものをたくさんの人に説明してくれることを願っています。
前もって感謝します
java - BCELのスタックに整数をプッシュする方法
BCELのスタックに整数をプッシュするというコンテキストで問題に直面しています。someClassのメソッド_square、つまり「mathClass」があります
ありがとう
java - BCEL のスタック オペランドにカスタム タイプ オブジェクトをプッシュできますか?
BCEL では、オペランド スタックにプリミティブ型をプッシュできます。しかし、BCELのスタックにカスタム タイプ オブジェクトをプッシュできるかどうか知りたいですか?
問題のコンテキストを説明できるように、いくつかのコードを提供しています
1-createNew() メソッドを使用して新しいオブジェクトを生成する場合、そのフィールド値をどのように埋めるのですか? 2-または、最初にPUSHを使用してエンジンタイプObjのすべてのフィールド値をスタックにプッシュする場合、メモリ上にオブジェクトを構築してスタックにプッシュする方法があります。これらは私が考えることができるいくつかの解決策です。
しかし、私は正しい解決策を知らないので、まだ助けが必要です...