問題タブ [javassist]
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 - Java ログをテキストに書き込む
現在、いくつかの情報を追跡するためにロガーを使用してメソッドをインストルメント化していますが、ログ出力をテキスト ファイルに抽出する際に問題があります。
私がやっていることは、すべてのメソッドをインストルメントlogger.info
化することですが、すべてのメソッドに重複したハンドラーを追加するため、ハンドラーを追加する場合は機能しません。私は現在insertBefore()
、インストルメンテーション部分に Javassist のメソッドを使用しています。これは次のようになります。
insertBefore("Loggers and some implementations");
-これは、実行前にすべてのメソッドでロガー/実装が行われることを意味します。つまり、ここにハンドラーを追加すると、同じ名前のハンドラーがメソッドの数と同じ数だけ存在し、重複するとエラーが発生します。
spring - エンティティ-クラスはいつ強化され、何のために使用されますか?jpa、spring、hibernate、javassist
私はspring3.0.6、jpa 2.0、hibernate3.6.8を使用しています。私の質問は、どのような状況でjavassistを使用してEntityClassの「プロキシ」を作成するのですか?そして、このプロキシの理由は何ですか?私は次のエンティティを持っています:
dbからMyEntityをロードすると、エンティティのクラスはMyEntity __ $$_javassistのようになります。なぜそれが行われるのですか?何のために?ここでは通常のクラスMyEntityだけを使用できると思います。
遅延読み込みを実装するには、次のことができます。
- @OneToManyの場合-PersistenceBagはここで使用できます
- @ManyToOneの場合-ここでは、Adress_ $$ _javassistのような「enchancedClass」を使用する必要があります
では、MyEntityを強化する理由は何ですか?どこでそれについてもっと読むことができますか?どの本/記事/ブログを私に勧めてもらえますか?
javassist - Javassist で同期ブロック オブジェクト パラメータを取得する方法
みなさん、同期ブロックのパラメータを取得したいのですが、
Javassistを使用してバイトコードレベルでパラメータ「obj」を取得するにはどうすればよいですか? どんな提案でも大歓迎です。
java - Android用のカスタムクラスローダー?
デスクトップとモバイル (Android) の両方で動作するインストルメンテーション ライブラリを作成しています。
次のように機能します。
- ターゲット クラスのメインである、単一のパラメーターを受け取るメインの公開
- すべてのクラスをロード時にインターセプトして計測するクラスローダーをインストールする
そのようです:
質問はこれです:
Androidアプリでほぼ同じことを行うにはどうすればよいですか?
1 つのアイデアは、Android マニフェストを変更して既存のアクティビティを「ラッパー」アクティビティに置き換え、クラス ローダーをインストールして、元の基になるアクティビティを呼び出すことです。より良い方法はありますか?
java - javassistを使用したインストルメント化されたメソッド
インストルメントされた各メソッドに数行のコードを追加して、メソッドの名前をファイルに書き込もうとしています。私はJavassistを使用しています。
これが私のコードです:
私の問題は他の部分にあります。行の値を取得できないため、ファイルを開いて書き込みます。
では、lineの値を取得する方法について考えていますか?
ありがとう
java - javassist を使用して別のクラスをロードする
プロファイラーと基本アプリケーション (JUnit テストあり) の 2 つのプロジェクトがあります。
プロファイラーは、Javassist を使用して基本的なアプリケーションを計測します。
プロファイラーが基本アプリケーション内にある場合、正常に動作します。プロファイラーが基本アプリケーションの外部にある場合、基本アプリケーションの jar ファイルを Eclipse のビルド パスにインポートして、アプリケーションを計測できるようにする必要があります。
EMMA のように、コマンド ラインで基本的なアプリケーションでプロファイラーを実行したいと考えています。
java -jar profiler.jar run application.jar
しかし、プロファイラーに指示する方法がわかりません。OK、この jar を計測します。
これが私のプロファイラーのメインコードです:
私はそれをやろうとしました:
しかし、実行すると、次のようになります。
そこで、メイン クラス ディレクトリに直接実行しようとしました。
外部の jar プロジェクトでプロファイラーを実行する方法について何かアイデアはありますか? どうもありがとう!
java - ASM と Javassist の間で *生成されたコード* の速度に違いはありますか?
Java プロジェクトのランタイム バイトコードの生成/変更を検討しています。
ASM と Javassist という 2 つの重要な、そして現在も維持されている API があります。
ASM は、コードの生成が最も速く、おそらく最も強力です。しかし、Javassist よりもユーザーフレンドリーではありません。
私の場合、バイトコード操作を事前に実行して、アプリケーションのセットアップ フェーズの最後に完了するようにしたいと考えています。したがって、操作/生成の速度は重要ではありません。重要なのは、生成されたコードの速度です。これは、ネットワーク遅延がリフレクションのコストを完全に隠す典型的な Web アプリではなく、リアルタイムのデスクトップ ゲームの一部になるためです。
私の質問は、Javassist は、ASM を使用する場合には存在しない、バイトコードに不要なオーバーヘッドを導入するのでしょうか? または、別の言い方をすれば、ASM レベルで作業すると、Javassist で作業する場合と比較して、生成されたコードの速度が向上しますか?
[編集] 私は両方のツールの最新バージョンに興味があり、同じ問題で両方を試してみて、結果のクラスの速度に大きな違いがあるかどうかを確認することに最も興味があります。
java - javassist を使用して実行時にクラスを置き換える方法
ここで javassist を使用している人を知らないので、サンプル コードが必要です。ユーザー入力のJavaソース文字列があり、それをコンパイルできます。私の質問は、javassistを使用してこの新しいクラスをメモリ内の古いクラスに置き換える方法です。誰でもサンプルコードを表示できますか? ありがとう。
java - AspectJ はフィールド呼び出しを getter/setter に置き換えることができますか?
たとえば、パブリック フィールドと対応するゲッター/セッターを持つクラスがあります。
フィールドを呼び出しますname
。
バイトコードを次のようにクラスを拡張するために、aspectj を使用できますか。
私はjavassistがこれを行うことができることを知っていますが、AspectJ は同じことを行うことができますか?