Java RMI解组异常
我正在调用此远程方法:Java RMI解组异常,java,serialization,rmi,Java,Serialization,Rmi,我正在调用此远程方法: RespuestaError<Co> cox(String a, String b, String c, int d) throws RemoteException; 这意味着RespuestaError不可序列化,但它是: public class RespuestaError<T extends Serializable> implements Serializable { private static final long se
RespuestaError<Co> cox(String a, String b, String c, int d) throws RemoteException;
这意味着RespuestaError不可序列化,但它是:
public class RespuestaError<T extends Serializable> implements Serializable {
private static final long serialVersionUID = 8483079015565009698L;
private T returned;
private Error error;
public RespuestaError(T returned, Error error)
{
//...
}
//...
}
美国班是:
public class Us implements Serializable {
private static final long serialVersionUID = -6725570673833522155L;
private int a;
private String b;
private String c;
private String d;
private String e;
private int f;
public Us(int a, String b, String c, String d, String e, int f)
{
//...
}
//...
}
我没有看到任何错误 代码中没有错误。问题是我没有运行我认为正在运行的代码。清理和重新编译所有文件解决了这个问题。我认为,
private T返回的
和private错误
也应该是implements Serializable
。我碰巧刚刚完成了一个RMI程序,我只是尝试了与您所做的非常类似的操作,我没有看到任何错误。也许你要确保所有文件都被重新编译,并确保导入java.io.Serializable?@Gordon Liang恐怕你是对的。不需要公共无参数构造函数。是我的错误,我误解了文件。谢谢。@Little Santic欢迎您。我一开始也怀疑。但事实并非如此。有一个更明确的规范:您没有运行您认为正在运行的代码。清理、构建、部署、重新测试。
public class Co implements Serializable {
private static final long serialVersionUID = 2759254657635643074L;
private String a;
private int b;
private Us c;
public Co(String a, int b, Us c)
{
//...
}
//...
}
public class Us implements Serializable {
private static final long serialVersionUID = -6725570673833522155L;
private int a;
private String b;
private String c;
private String d;
private String e;
private int f;
public Us(int a, String b, String c, String d, String e, int f)
{
//...
}
//...
}