私はサーバーからクラスを逆シリアル化しようとしますが、クライアントでは次のようになります:
java.lang.ClassNotFoundException: com.server.core.StateFilesStruct
私のクライアントでは、このパッケージ名の StateFilesStruct クラスは次のとおりです。
com.client.core.StateFilesStruct
ここに私のクラスがあります:
public Object deserialize(byte[] bytes) {
ByteArrayInputStream b = new ByteArrayInputStream(bytes);
ObjectInputStream o = null;
try {
o = new ObjectInputStream(b);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
return o.readObject();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return o;
}
これを送信するクラスはサーバーにあります:
package com.server.core;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Hashtable;
public class StateFilesStruct implements Serializable {
private static final long serialVersionUID = 988633010151085730L;
private Hashtable<String,String> Repository;
public Hashtable<String, String> getRepository() {
return Repository;
}
public void setRepository(Hashtable<String, String> repository) {
Repository = repository;
}
public StateFilesStruct()
{
Repository = new Hashtable<String,String>();
}
}
クライアントに保持するクラスはサーバーと同じですが、パッケージ名が異なります。
package com.client.core;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Hashtable;
public class StateFilesStruct implements Serializable {
private static final long serialVersionUID = 988633010151085730L;
private Hashtable<String,String> Repository;
public Hashtable<String, String> getRepository() {
return Repository;
}
public void setRepository(Hashtable<String, String> repository) {
Repository = repository;
}
public StateFilesStruct()
{
Repository = new Hashtable<String,String>();
}
}
クライアントでクラスを解決しようとする方法は次のとおりです。ZeroMQを使用してtcpipソケットから受信する
byte[] byteFileStruct = m_pNetworkManager.getSocket().recv(0);
StateFilesStruct stateFilesStruct = (StateFilesStruct)deserialize(byteFileStruct);
サーバークラスから見えるように、この例外を取得します。
java.lang.ClassNotFoundException: com.server.core.StateFilesStruct
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)