問題タブ [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 - Javassist:プロキシのプロキシを作成する方法は?
javassistを使用してプロキシを作成していますProxyFactory
。単一のプロキシを作成する場合、すべて正常に機能します。
ただし、プロキシされたオブジェクトをプロキシメカニズムに渡すと、次のように失敗します。
javassist.bytecode.DuplicateMemberException:重複メソッド:com.mypackage.Bean _ $$ _ javassist_0 _ $$_javassist_1のsetHandler
私はこれでプロキシを作成しています:
では、どうすればプロキシのプロキシを作成できますか?
更新:実際の問題は、各プロキシProxyObject
がwhichdefinesetHandler(..)
メソッドを実装していることです。したがって、2番目のプロキシは、サブクラスでメソッドをオーバーライドするのではなく、メソッドを再定義しようとしています。
class - java クラスを動的に作成し、ネットワーク上のさまざまな jvm でアクセスできるようにします。つまり、シリアライズ可能です。
Java クラスを動的に作成し、ネットワーク経由でさまざまな jvm にアクセスできるようにする必要があります。リフレクションと javassist ツールを使用しようとしましたが、何も機能しませんでした。Coherence分散キャッシュを使用しているシナリオを説明しましょう。クラスター全体で集約/フィルタリングを並行して実行する機能があります。たとえば、クラスに[動的クラス]がある場合、金額変数とgetAmount/setAmountメソッドがあります。次に、COHERENCE クエリを実行すると、クラスター全体で並行してプロセスが開始されます。
javassist とリフレクションを使用して、実行時にクラスを作成しようとしました。単一の JVM からはアクセスできますが、[coherence クラスタを介して] 他の jvm から同じクラスにアクセスしようとすると、. クラスが見つからないという例外が発生しています[リモートjvmがこのクラスを認識していないため].リモートjvmでも同じクラスを動的に作成し、メソッドにアクセスすることでこれを克服できます。しかし、構築されたメソッド/関数の一貫性はクラスを見つけることができません。誰かこの件で私を助けてくれませんか
java - 実行時に注釈付きフィールドを持つ Java クラスを作成する
問題は、実行時に次のようなクラスを作成する必要があることです。
フィールドの数は実行時に決定されます。
私はJavassistを見ていました.そこで新しいクラスを作成し、それにフィールドを追加できますが、それらのフィールドに注釈を付ける方法が見つかりません.
java - Javassistを使用してランタイムで生成されたメソッド/クラスにアノテーションを追加する
Javassistを使用foo
してメソッドを使用してクラスを生成していますが、メソッドbar
にアノテーションを追加する方法が見つからないようです(アノテーション自体はランタイムで生成されません)。私が試したコードは次のようになります。
annots
そして明らかに、空の配列なので、私は何か間違ったことをしています。
注釈は次のようになります。
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)を検査することだと思います。
java - Javassist アノテーションの問題
javassist を使用して Entity クラスを生成しようとしています。GeneratedValue アノテーションを Id フィールドに追加するまでは、すべてうまくいきました。@Id アノテーションは正常に機能しますが、@GeneratedValue を追加すると例外が発生します。これは私のコードです:
そして、これは私が得る例外です:
@GeneratedValue に問題があるようです。IDなしで単独で使用すると、この例外も発生します。eclipseデバッガーを使用して変数値を監視すると、これが得られます
注釈値の代わりに。ただし、Id アノテーションの場合は javassist アノテーション オブジェクトが表示されます。
私はjavassistが初めてです。誰でも私を助けることができますか?
java - Javassist 対。Java コンパイラ API
現在取り組んでいるプロジェクトでは、実行時に Java クラスを生成する必要があります。また、後でこれらのクラスを使用するときは、リフレクションを使用しないようにする必要があります。
これを行うための現在のソリューションを探していて、Javassist と Java 6 Java Compiler API を見つけました。
私は混乱しています:
Javassist はクラスを生成するために何を使用しますか? リフレクションか何かを使用していますか?
いくつかのテストをコーディングしましたが、ソース コードからバイトコードを生成し、生成されたバイトコードからクラスをロードするのは非常に簡単であることがわかりました。このソリューションよりも Javassist を使用する利点は何ですか?
java - Javassist でコンパイルされたクラスのクラスパス
タイトルの通り、Javassistでコンパイルされたクラスのクラスパスは?
私のシナリオは次のとおりです。クラス A は Javassist でコンパイルされています。クラス B は Java Compiler API でコンパイルされ、クラス A を参照します。問題は、クラス A がクラス B から見えないことです...
何か案は?
hibernate - introspection - Hibernate によって管理されるオブジェクトのテーブル名 (JavassistLazyInitializer)
Hibernate が管理するオブジェクトのテーブル名をイントロスペクションで取得したい (lazy)。
私のオブジェクトには、プロパティハンドラーに「org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer」が含まれています。
オブジェクトのタイプは「mypackage.myObjectDO_ _javassist_2 $ $」で、クラス「mypackage.myObjectDO」に含まれる注釈が含まれていません (注釈 javax.persistence.Table を探します)。
どのようにできるのか?
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 を機能させることができたという事実です。その後、何らかの理由で(何が原因かはよくわかりません)停止し、そのエラーを取り除くことができません。
ご協力いただきありがとうございます。