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

java - Javassist:プロキシのプロキシを作成する方法は?

javassistを使用してプロキシを作成していますProxyFactory。単一のプロキシを作成する場合、すべて正常に機能します。

ただし、プロキシされたオブジェクトをプロキシメカニズムに渡すと、次のように失敗します。

javassist.bytecode.DuplicateMemberException:重複メソッド:com.mypackage.Bean _ $$ _ javassist_0 _ $$_javassist_1のsetHandler

私はこれでプロキシを作成しています:

では、どうすればプロキシのプロキシを作成できますか?

更新:実際の問題は、各プロキシProxyObjectがwhichdefinesetHandler(..)メソッドを実装していることです。したがって、2番目のプロキシは、サブクラスでメソッドをオーバーライドするのではなく、メソッドを再定義しようとしています。

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

class - java クラスを動的に作成し、ネットワーク上のさまざまな jvm でアクセスできるようにします。つまり、シリアライズ可能です。

Java クラスを動的に作成し、ネットワーク経由でさまざまな jvm にアクセスできるようにする必要があります。リフレクションと javassist ツールを使用しようとしましたが、何も機能しませんでした。Coherence分散キャッシュを使用しているシナリオを説明しましょう。クラスター全体で集約/フィルタリングを並行して実行する機能があります。たとえば、クラスに[動的クラス]がある場合、金額変数とgetAmount/setAmountメソッドがあります。次に、COHERENCE クエリを実行すると、クラスター全体で並行してプロセスが開始されます。

javassist とリフレクションを使用して、実行時にクラスを作成しようとしました。単一の JVM からはアクセスできますが、[coherence クラスタを介して] 他の jvm から同じクラスにアクセスしようとすると、. クラスが見つからないという例外が発生しています[リモートjvmがこのクラスを認識していないため].リモートjvmでも同じクラスを動的に作成し、メソッドにアクセスすることでこれを克服できます。しかし、構築されたメソッド/関数の一貫性はクラスを見つけることができません。誰かこの件で私を助けてくれませんか

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

java - 実行時に注釈付きフィールドを持つ Java クラスを作成する

問題は、実行時に次のようなクラスを作成する必要があることです。

フィールドの数は実行時に決定されます。

私はJavassistを見ていました.そこで新しいクラスを作成し、それにフィールドを追加できますが、それらのフィールドに注釈を付ける方法が見つかりません.

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

java - Javassistを使用してランタイムで生成されたメソッド/クラスにアノテーションを追加する

Javassistを使用fooしてメソッドを使用してクラスを生成していますが、メソッドbarにアノテーションを追加する方法が見つからないようです(アノテーション自体はランタイムで生成されません)。私が試したコードは次のようになります。

annotsそして明らかに、空の配列なので、私は何か間違ったことをしています。

注釈は次のようになります。

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

java - HibernateでのJavassistの失敗:無効な定数タイプ:60

既存のアプリケーションを管理するためのCLIツールを作成しています。アプリケーションとテストの両方が正常にビルドされ、正常に実行されますが、jar内に存在するCLIツールを実行するとjavassistエラーが発生します。

ユニットテストと統合テストが実行されるのでjarが正常であることがわかっているので、javassistの問題である可能性があると考えたので、cglibを試しました。バイトコードプロバイダーはcglibとして表示されますが、javassistが存在するまったく同じスタックトレースを取得します。

cglibは間違いなくクラスパスにあります:

hibernate 3.4と3.5の両方で試しましたが、まったく同じエラーが発生します。これはjavassistの問題ですか?

更新:Eclipse内でアプリケーションを正常に実行できますが(右クリック->実行-> Javaアプリケーション)、mavenで生成されたjar-with-dependenciesの使用は失敗します。違いは、Eclipseではjavassistが含まれているjarを検査するのではなく、すべてのクラスファイル(およびおそらくいくつかの依存するサードパーティのjar)を検査することだと思います。

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

java - Javassist アノテーションの問題

javassist を使用して Entity クラスを生成しようとしています。GeneratedValue アノテーションを Id フィールドに追加するまでは、すべてうまくいきました。@Id アノテーションは正常に機能しますが、@GeneratedValue を追加すると例外が発生します。これは私のコードです:

そして、これは私が得る例外です:

@GeneratedValue に問題があるようです。IDなしで単独で使用すると、この例外も発生します。eclipseデバッガーを使用して変数値を監視すると、これが得られます

注釈値の代わりに。ただし、Id アノテーションの場合は javassist アノテーション オブジェクトが表示されます。

私はjavassistが初めてです。誰でも私を助けることができますか?

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

java - Javassist 対。Java コンパイラ API

現在取り組んでいるプロジェクトでは、実行時に Java クラスを生成する必要があります。また、後でこれらのクラスを使用するときは、リフレクションを使用しないようにする必要があります。

これを行うための現在のソリューションを探していて、Javassist と Java 6 Java Compiler API を見つけました。

私は混乱しています:

  1. Javassist はクラスを生成するために何を使用しますか? リフレクションか何かを使用していますか?

  2. いくつかのテストをコーディングしましたが、ソース コードからバイトコードを生成し、生成されたバイトコードからクラスをロードするのは非常に簡単であることがわかりました。このソリューションよりも Javassist を使用する利点は何ですか?

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

java - Javassist でコンパイルされたクラスのクラスパス

タイトルの通り、Javassistでコンパイルされたクラスのクラスパスは?

私のシナリオは次のとおりです。クラス A は Javassist でコンパイルされています。クラス B は Java Compiler API でコンパイルされ、クラス A を参照します。問題は、クラス A がクラス B から見えないことです...

何か案は?

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

hibernate - introspection - Hibernate によって管理されるオブジェクトのテーブル名 (JavassistLazyInitializer)

Hibernate が管理するオブジェクトのテーブル名をイントロスペクションで取得したい (lazy)。

私のオブジェクトには、プロパティハンドラーに「org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer」が含まれています。

オブジェクトのタイプは「mypackage.myObjectDO_ _javassist_2 $ $」で、クラス「mypackage.myObjectDO」に含まれる注釈が含まれていません (注釈 javax.persistence.Table を探します)。

どのようにできるのか?

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

struts2 - Weblogic 10 と Struts 2.x の問題 - Javassist

この問題を助けてください、私は怒っています...

EJB 3 と Struts 2 を使用して、Weblogic 10 をアプリケーション サーバーとして、IIS を Web サーバー (企業の制約) として使用して、クライアント サーバー Web アプリケーションを作成しようとしています。ただし、解決できないストレージの問題があります。

Struts 2.2 を使用すると、サーバーの起動中に次のスタック トレースが表示されます。

ただし、Javassist パッケージは、他のすべての Struts 関連ライブラリーの中で Web クラスパス (/WEB-INF/lib ディレクトリ) に明確に表示されており、そのパッケージとクラスを参照することもできます。CLASSPATH ライブラリと Weblogic 初期化パラメータにも入れましたが、何も機能しません。どう考えたらいいのかわからない。これは Struts 2/Weblogic 統合のバグですか?

さらに奇妙なのは、最初に Struts 2 を機能させることができたという事実です。その後、何らかの理由で(何が原因かはよくわかりません)停止し、そのエラーを取り除くことができません。

ご協力いただきありがとうございます。