Java側で言語境界を越えるには、直列化されるクラスがDataSerializableインタフェースを実装する必要があります。 c#のデシリアライザにクラスが分かるようにするには、classIDを登録する必要があります。例に続いて、私はこのようなJavaで私のクラスを記述します。GemFire:Javaでオブジェクトをシリアル化し、次にそれらをcで逆シリアル化します。
public class Stuff implements DataSerializable{
static { // note that classID (7) must match C#
Instantiator.register(new Instantiator(Stuff.class,(byte)0x07) {
@Override
public DataSerializable newInstance() {
return new Stuff();
}
});
}
private Stuff(){}
public boolean equals(Object obj) {...}
public int hashCode() {...}
public void toData(DataOutput dataOutput) throws IOException {...}
public void fromData(DataInput dataInput) throws IOException, ClassNotFoundException { ...}
}
それはOKに見えますが、私はそれを実行したとき、私はこの例外を取得:2012年3月30日15時06警告[
を:プールの インスタンシを登録00.239 JSTのTID = 0x1の]エラー: com.gemstone.gemfire.cache.client.ServerOperationException: は com.gemstone.gemfire.cache.client.internal.AbstractOp.processAckでリモートregisterInstantiatorsを実行している間(AbstractOp.java:247) at com.gemstone.g emfire.cache.client.internal.RegisterInstantiatorsOp $ RegisterInstantiatorsOpImpl.processResponse(RegisterInstantiatorsOp.java:76) com.gemstone.gemfire.cache.client.internal.AbstractOp.attemptReadResponse(AbstractOp.java:163) コムで で。 コムでgemstone.gemfire.cache.client.internal.AbstractOp.attempt(AbstractOp.java:363) でcom.gemstone.gemfire.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:229) 。 gemstone.gemfire.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:321) com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:646)012で で com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute com.gemstone.gemfire.cache.client.internal.PoolImpl.execute(PoolImpl.java:624)で(OpExecutorImpl.java:108) で で com.gemstone.gemfire.cache.client.internal.RegisterInstantiatorsOp.execute com.gemstone.gemfire.internal.cache.PoolManagerImpl.allPoolsRegisterInstantiator(PoolManagerImpl.java:216)で(RegisterInstantiatorsOp.java:39) コム(内部インスタントメッセージ。com.gemstone.gemfire.internal.InternalInstantiator.registerスタッフに(InternalInstantiator.java:71)com.gemstone.gemfire.Instantiator.register(Instantiator.java:168)で 。(Stuff.java)
java.lang.ClassNotFoundException:スタッフ、助けることができる経験を持っている人があるなぜ私が把握することができませんでし$ 1
によって引き起こされますか?前もって感謝します!
さらに多くのコード例や完全なコード例を提供できますか? – Avinash