問題タブ [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 Type の署名を String として取得する
特定の Java 型の型シグネチャを(文字列として) 取得する必要があります。
たとえば、これは特定のParameterizedTypeの型シグネチャです。
Javassist で開発されているアプリケーションのコンテキストでこれが必要です。
私が探しているものをよりよく説明するために、createGetter
Javassist を使用してプライベート フィールドのゲッター メソッドを生成するメソッドの抜粋を示します。フィールドの型はパラメータ化された型です (つまり、ジェネリックを使用します)。
メソッドは最初のcreateGetter
パラメーターとしてフィールドのタイプを受け取り、2 番目のパラメーターはフィールドの名前、3 番目のパラメーターはメソッドを追加するクラスです。
たとえば、クラスがある場合
createGetter
次に、フィールドのメソッドを呼び出した後myField
、クラスは次のようになります。
生成された getter メソッドの戻り値の型は、フィールドと同じジェネリック シグネチャを持っている必要があります (コードは、メソッドがフィールドと同じジェネリック シグネチャを持っていなくてもコンパイルできます。これは、コンパイラにとって同じクラスを持つだけで問題ないためです。それが必要な理由同じ型のジェネリック シグネチャを持つことについては、ここでは説明しません)。
メソッドのコードは、createGetter
Javassist を使用してメソッドのジェネリック型シグネチャを設定するには、最初に String などの型シグネチャを取得する必要があることを示しています (別の方法がある場合は、誰か教えてください)。フィールドとまったく同じであるため、ゲッターメソッドが持つべき正確なパラメーター化された型を知っています。しかし、私はParameterizedTypeのインスタンスのような型を持っています。
私の質問は、任意の Java Typeを指定して、これらの型シグネチャを文字列 (型パラメーター データを含む) として取得するにはどうすればよいかということです。
助けてくれてありがとう。
java - Javassist:Bytecode.get()が機能していません
bc.get()は何も返しません。私の目的は、クラスのバイトコードを取得することです。
java - カスタム クラスローダーを使用して org.apache.log4j.ConsoleAppender を構成する
起動時にjavassistクラスローダーに基づいてカスタムクラスローダーを作成し、実際のプログラムクラスを実行するJavaクラスがあります。次のエラーが表示されます。
この問題は、1 つのオブジェクトが元のクラスローダーによって作成され、もう 1 つのオブジェクトがカスタム クラスローダーによって作成されるという事実に関連しています。
このエラーを解決する方法はありますか?
前もって感謝します、
アヴナー
java - javassist バイトコード操作と Maven コンパイルの統合
javac/aspectj コンパイラでコンパイルする Maven プロジェクトがあります。
コンパイルされたクラスを操作してそれらに追加するjavassistプログラムをコンパイルしたクラスで実行したい。
「プロセスクラス」フェーズを使用してツールを実行することを考えました。
私の質問は、「ターゲット/クラス」で作成されたクラスファイルをjavassistで反復処理して、後でロード、修正、保存できるようにする最良の方法は何ですか.
もう 1 つの要件は、テスト クラスでもツールを実行することです。
同様のことを行うオープン ソース プロジェクトがある場合は、実際の例を参照してください。
ありがとう、
アヴナー
playframework - WebSphere8で1.2.xを再生する
単純なPlay(1.2.4)アプリケーションをWebSphere 8にデプロイしたいと思います。このアプリケーションは、Windows上でローカルに動作しています。どちらもJava1.6です。以下を使用してWARファイルを作成しました。
次に、生成されたweb.xmlを変更して、サーバーのデータソースを定義し、warファイルを再度ビルドしてデプロイしました。デプロイ中に、web.xmlからresource-refが見つかり、WASで定義されたデータソースにバインドしました。次に、クラスローダーの順序を「最後の親」に変更しました(Playデプロイメントオプションページおよびその他のスレッドに基づく)。その後、エラーなしでアプリケーションを起動しました。
@OnApplicationStartとマークされたメソッドでplay.jobs.Jobを拡張するクラスがあります。新しくインストールしたアプリケーションをWASコンソールから起動すると、このメソッドが起動して実行され、データソースに接続してデータをロードしてキャッシュに入れます。
最初のコントローラーにアクセスしようとするとすぐに問題が発生し、次のエラーが発生します。
これが私の関連するコントローラーコードです:
エラーはセッション参照から発生しているようです。renderArgsを参照するコメント行も、アクティブなときに同様のエラーを引き起こしたことに注意してください。
javassistはどこかで適切に「強化」されていませんか?javassist jarを最新バージョンに置き換えてみましたが、同じ結果になりました。
私はここの「企業」でPlayを手に入れるために本当に一生懸命努力しているので、これを本当に機能させたいと思っています。2012年9月の時点で、PlayがWAS8で正常に実行されたかどうかはわかりません。Play 2(java)を検討しますが、WASは確実にサポートされていないようで、プラグインplay2warもまだWASをサポートしていないようです。WASなしでは実行できないのは愚かなことですが、これが私たちの企業の現実です。
更新:
Play 1.2.5も試してみて、新しいアプリを作成し、Application.indexメソッドにsession.get( "x")という1行を追加しました。warファイルをデプロイし、最初のアクセスで同じエラーが発生しました。
powermock - Javassist3.17.0-GAはいつ利用可能になりますか
Javassist 3.17.0-GAがいつ利用可能になるか知っている人はいますか?
Java7で使用するとPowerMockを壊すJavaassit(3.17.0-GAで修正済み)のバグがあります: https ://issues.jboss.org/browse/JASSIST-160?focusedCommentId = 12718716&page = com.atlassian.jira .plugin.system.issuetabpanels:comment-tabpanel#comment-12718716
関連するPowerMockのバグ http://code.google.com/p/powermock/issues/detail?id=355
instance - javassistでctClassからnewInstanceを作成するには?
インスタンスを作成できます:
しかし、javassist でクラスを変更する必要があります。
今、ctClass からインスタンスを作成したいのですが、どのようにすればよいですか?
java - メソッド本体の一部をjavassistで変更
最初に私の目標を説明させてください...メソッド本体の一部を変更する必要があります。つまり、メソッド内にはいくつかの呼び出しがありますが、これらの呼び出しの 1 つだけを変更して、1 つではなく 2 つのパラメーターを使用する必要があります。メソッド本体を取得することを考えたメソッド内で残りをすべて同じに保ちたい、この特定の呼び出しを正規表現で変更して、変更して元に戻したい。
それを行う良い方法だとしましょう...どうすればメソッド本体を取得できますか?
どんな提案でも本当に感謝します
ありがとう
ラファエル・モイタ
java - Javassistで作成された新しいメソッドのパラメーターにアノテーションを追加します
メソッドパラメータにアノテーションを追加する必要があります。このメソッドは、以前は次のようなjavassistで作成されていました。
追加したい注釈は非常に単純です。
1)メソッド作成でアノテーションを書くとスロー
2)この解決策を見つけましたが、私の場合はnullを返す行に基づいています:
私はこれを達成する方法に迷っています。新しいメソッドを作成し、そのパラメーターにアノテーションを追加する方法を見つけた人はいますか?
前もって感謝します。