Чтобы пересечь границу языка на стороне 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 /30 15: 06: 00.239 JST tid = 0x1] Ошибка регистрации экземпляра в пуле: com.gemstone.gemfire.cache.client.ServerOperationException:: при выполнении удаленного registerInstantiators в com.gemstone.gemfire.cache.client.internal.AbstractOp.processAck (AbstractOp.java:247) в com.gemstone.gemfire.cache.client.internal.RegisterInstantiatorsOp $ RegisterInstantiatorsOpImpl.processResponse (RegisterInstantiatorsOp.java:76) в com.gemstone.gemfire.cache.atesEAbstractOp.java:163) в com.gemstone.gemfire.cache.client.internal.AbstractOp.attempt (AbstractOp.java:363) в com.gemstone.gemfire.cache.client.internal.ConnectionImpl.execute (ConnectionImpl.java:229) в com.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) в кэше.ПулJava: 216) в com.gemstone.gemfire.internal.InternalInstantiator.sendRegistrationMessageToServers (InternalInstantiator.java:188) в com.gemstone.gemfire.internal.InternalInstantiator._register (InternalInstantiator.java:143) в com.ge.ge.InternalInstantiator.register (InternalInstantiator.java:71) в com.gemstone.gemfire.Instantiator.register (Instantiator.java:168) в Stuff. (Stuff.java)
Причина: java.lang.ClassNotFoundException: Вещи $ 1
Я не мог понять, почему этоКто-нибудь, у кого есть опыт, может помочь?Заранее спасибо!