1

新しいタイプのオブジェクトを受け取るものを書いています。これらのオブジェクトを取得する前に、これらの新しいタイプのクラスファイルを送信します。新しいオブジェクトを読み込むと、クラスファイルがクラスパス(binフォルダー)を実行しているアプリケーションにない限り、ClassNotFoundExceptionがスローされます。

クラスファイルをシステムの別の場所(Windows)に保存したいと思います。カスタムクラスローダーの使用を検討しましたが、正常に使用できませんでした。より簡単な解決策は、クラスファイルを探すために別の場所/クラスパスを追加するだけのように見えます。ただし、場所をWindowsのCLASSPATH変数に追加しても効果がないようです。

4

1 に答える 1

3

ClassLoaderクラスをどのように注入しているか (ネットワーク経由またはファイルシステムに触れているか) に関係なく、最終的には a を使用してこのようなことを行う必要があります。

ただし、これを処理するライブラリがあり、特にJoddがこれを処理します。ドキュメントによると、ネットワーク経由でクラス バイトを取得している場合は、ワンライナーでクラスを追加できます。

Class c = ClassLoaderUtil.defineClass("MyNewClass", classBytes);

見る:ClassLoaderUtil.defineClass()

これにより詳細が隠さClassLoaderれますが、 を使用しClassLoaderて必要なことを行う (ネットワーク経由でクラス バイトをプルする) のは非常に簡単です。ここにあなたが抱えている特定の問題をあなたのコードの一部とともに投稿する必要があります.誰かがあなたに役立つ答えを与えることができるはずです.

于 2012-06-20T16:35:34.173 に答える