次の問題があります。タイプ(java.lang.Class)をネットワーク経由で送信し、反対側でクラスを「定義」したい。
私はそのように試しました:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(MyClass.class);
および受信側:
ByteArrayInputStream bis = new ByteArrayInputStream(request.getBytes());
ObjectInputStream ois = new ObjectInputStream(bis);
Class c = (Class) ois.readObject(); // ClassNotFoundException
したがって、明らかに、クラスの生のバイトコードを送信して、
ClassLoader.defineClass(bytes, ..
しかし残念ながら、ロードされたクラスのバイトコードを取得する方法がわかりません。私は次のようなものを探しています:
byte[] byteCode = MyClass.class.toByteArray();
これは標準のJDKでも可能ですか、それともそれを実行できる小さなライブラリがありますか?