要在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 { ...}
}
它看起来不错,但是当我运行它,我得到这个异常:
[2012/03/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) 在 com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:108) 在 com.gemstone.gemfire.cache.client.internal.PoolImpl.execute(PoolImpl.java:624) 在 com.gemstone.gemfire.cache.client.internal.RegisterInstantiatorsOp.execute(RegisterInstantiatorsOp.java:39) 在 com.gemstone.gemfire.internal.cache.PoolManagerImpl.allPoolsRegisterInstantiator(PoolManagerImpl.java:216) 在 COM .gemstone.gemfire.internal.InternalInstantiator.sendRegistrationMessageToServers(InternalInstantiator.java:188) at com.gemstone.gemfire.internal.InternalInstantiator._register(InternalInstantiator.java:143) at com.gemstone.gemfire.internal.InternalInstantiator.register(InternalInstantiator.java:71) 在com.gemstone.gemfire.Instantiator.register(Instantiator.java:168) 在东西。(Stuff.java)
导致:java.lang.ClassNotFoundException:东西$ 1
我想不通为什么,有没有人有经验可以帮助?提前致谢!
您能否提供更多或完整的代码示例。 – Avinash 2013-09-06 11:57:24