問題タブ [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.

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

java - Java Type の署名を String として取得する

特定の Java 型の型シグネチャを(文字列として) 取得する必要があります。

たとえば、これは特定のParameterizedTypeの型シグネチャです。

Javassist で開発されているアプリケーションのコンテキストでこれが必要です。

私が探しているものをよりよく説明するために、createGetterJavassist を使用してプライベート フィールドのゲッター メソッドを生成するメソッドの抜粋を示します。フィールドの型はパラメータ化された型です (つまり、ジェネリックを使用します)。

メソッドは最初のcreateGetterパラメーターとしてフィールドのタイプを受け取り、2 番目のパラメーターはフィールドの名前、3 番目のパラメーターはメソッドを追加するクラスです。

たとえば、クラスがある場合

createGetter次に、フィールドのメソッドを呼び出した後myField、クラスは次のようになります。

生成された getter メソッドの戻り値の型は、フィールドと同じジェネリック シグネチャを持っている必要があります (コードは、メソッドがフィールドと同じジェネリック シグネチャを持っていなくてもコンパイルできます。これは、コンパイラにとって同じクラスを持つだけで問題ないためです。それが必要な理由同じ型のジェネリック シグネチャを持つことについては、ここでは説明しません)。

メソッドのコードは、createGetterJavassist を使用してメソッドのジェネリック型シグネチャを設定するには、最初に String などの型シグネチャを取得する必要があることを示しています (別の方法がある場合は、誰か教えてください)。フィールドとまったく同じであるため、ゲッターメソッドが持つべき正確なパラメーター化された型を知っています。しかし、私はParameterizedTypeのインスタンスのような型を持っています。

私の質問は、任意の Java Typeを指定して、これらの型シグネチャを文字列 (型パラメーター データを含む) として取得するにはどうすればよいかということです。

助けてくれてありがとう。

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

java - Javassist:Bytecode.get()が機能していません

bc.get()は何も返しません。私の目的は、クラスのバイトコードを取得することです。

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

java - カスタム クラスローダーを使用して org.apache.log4j.ConsoleAppender を構成する

起動時にjavassistクラスローダーに基づいてカスタムクラスローダーを作成し、実際のプログラムクラスを実行するJavaクラスがあります。次のエラーが表示されます。

この問題は、1 つのオブジェクトが元のクラスローダーによって作成され、もう 1 つのオブジェクトがカスタム クラスローダーによって作成されるという事実に関連しています。
このエラーを解決する方法はありますか?

前もって感謝します、
アヴナー

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

java - javassist バイトコード操作と Maven コンパイルの統合

javac/aspectj コンパイラでコンパイルする Maven プロジェクトがあります。
コンパイルされたクラスを操作してそれらに追加するjavassistプログラムをコンパイルしたクラスで実行したい。
「プロセスクラス」フェーズを使用してツールを実行することを考えました。
私の質問は、「ターゲット/クラス」で作成されたクラスファイルをjavassistで反復処理して、後でロード、修正、保存できるようにする最良の方法は何ですか.
もう 1 つの要件は、テスト クラスでもツールを実行することです。
同様のことを行うオープン ソース プロジェクトがある場合は、実際の例を参照してください。
ありがとう、
アヴナー

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

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ファイルをデプロイし、最初のアクセスで同じエラーが発生しました。

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

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

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

instance - javassistでctClassからnewInstanceを作成するには?

インスタンスを作成できます:

しかし、javassist でクラスを変更する必要があります。

今、ctClass からインスタンスを作成したいのですが、どのようにすればよいですか?

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

java - メソッド本体の一部をjavassistで変更

最初に私の目標を説明させてください...メソッド本体の一部を変更する必要があります。つまり、メソッド内にはいくつかの呼び出しがありますが、これらの呼び出しの 1 つだけを変更して、1 つではなく 2 つのパラメーターを使用する必要があります。メソッド本体を取得することを考えたメソッド内で残りをすべて同じに保ちたい、この特定の呼び出しを正規表現で変更して、変更して元に戻したい。

それを行う良い方法だとしましょう...どうすればメソッド本体を取得できますか?

どんな提案でも本当に感謝します

ありがとう

ラファエル・モイタ

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

java - Javassistで作成された新しいメソッドのパラメーターにアノテーションを追加します

メソッドパラメータにアノテーションを追加する必要があります。このメソッドは、以前は次のようなjavassistで作成されていました。

追加したい注釈は非常に単純です。

1)メソッド作成でアノテーションを書くとスロー

2)この解決策を見つけましたが、私の場合はnullを返す行に基づいています:

私はこれを達成する方法に迷っています。新しいメソッドを作成し、そのパラメーターにアノテーションを追加する方法を見つけた人はいますか?

前もって感謝します。