Java側で言語の境界を越えるには、シリアル化されるクラスにDataSerializableインターフェースを実装する必要があります。そして、c#のデシリアライザーにそれがどのクラスであるかを知らせるために、classIDを登録する必要があります。例に従って、Javaでクラスを次のように記述します。
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 { ...}
}
見た目は問題ありませんが、実行すると次の例外が発生します。
[警告2012/03/3015:06:00.239 JST tid = 0x1]プールでのインスタンス化の登録中にエラーが発生しました:com.gemstone.gemfire.cache.client.ServerOperationException::com.gemstone.gemfire.cacheでリモートregisterInstantiatorsを実行中。 client.internal.AbstractOp.processAck(AbstractOp.java:247)at com.gemstone.gemfire.cache.client.internal.RegisterInstantiatorsOp $ RegisterInstantiatorsOpImpl.processResponse(RegisterInstantiatorsOp.java:76)atcom.gemstone.gemfire.cache.client。 internal.AbstractOp.attemptReadResponse(AbstractOp.java:163)at com.gemstone.gemfire.cache.client.internal.AbstractOp.attempt(AbstractOp.java:363)atcom.gemstone.gemfire.cache.client.internal.ConnectionImpl。 execute(ConnectionImpl.java:229)at com.gemstone.gemfire.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:321)com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:646)at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:108) .gemstone.gemfire.cache.client.internal.PoolImpl.execute(PoolImpl.java:624)at com.gemstone.gemfire.cache.client.internal.RegisterInstantiatorsOp.execute(RegisterInstantiatorsOp.java:39)at com.gemstone.gemfire .internal.cache.PoolManagerImpl.allPoolsRegisterInstantiator(PoolManagerImpl.java:216)at com.gemstone.gemfire.internal.InternalInstantiator.sendRegistrationMessageToServers(InternalInstantiator.java:188)at com.gemstone.gemfire.internal.InternalInstantiator :143)com.gemstone.gemfire.internal.InternalInstantiatorで。register(InternalInstantiator.java:71)at com.gemstone.gemfire.Instantiator.register(Instantiator.java:168)at Stuff。(Stuff.java)
原因:java.lang.ClassNotFoundException:Stuff $ 1
理由がわからなかったのですが、経験のある人が助けてくれる人はいますか?前もって感謝します!