我重构(移动)了一堆类,现在我在尝试反序列化Session时得到ClassNotFoundException
。经典。
我创建了一个客户反序列化器SessionDeserializer extends ObjectInputStream
,除了通用类Result<T>
之外,它适用于大多数类。
泛型类本身并没有移动,所以我猜测问题在于已被移动的T
对象类。
现在问题是堆栈跟踪没有指定T
类:
java.lang.ClassNotFoundException: com.mysite.shared.beans.Result
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
...
您是否知道解决此问题的方法:通过查找T
对象中包含的Result<T>
类并调整SessionDeserializer
,或者跳过反序列化完全是Result<T>
个对象?
修改
添加了以下结果类:
public class Result<T> implements Serializable{
private static final long serialVersionUID=1L;
protected T t=null;
protected boolean success=false;
protected Map<String,String> errors=new HashMap<String,String>();
protected String message=null;
public void setData(T t){
this.t=t;
}
public T getData(){
return t;
}
public boolean isSuccess(){
return success;
}
public Map<String,String> getErrors(){
return errors;
}
public void setSuccess(boolean success){
this.success=success;
}
public void setErrors(Map<String,String> errors){
this.errors=errors;
}
protected void addError(String field, String msg){
errors.put(field,msg);
}
public String getMessage(){
return message;
}
public void setMessage(String message){
this.message=message;
}
}
答案 0 :(得分:0)
现在问题是堆栈跟踪没有指定T类。
那是因为这里不是T
类。问题是Result
类。信任异常消息。
我无法告诉你为什么类加载器找不到你的Result
类,但可能的解释是:
Result
类不在您的webapps类加载器的类路径中,或