求解序列化问题

以下程序运行时出现如下错误,求解
错误信息如下:
java.io.NotSerializableException: ch04.LogModel
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at java.util.ArrayList.writeObject(ArrayList.java:570)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at ch04.LogFileOperate.writeLogFile(LogFileOperate.java:54)
at ch04.Cilent.main(Cilent.java:25)
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: ch04.LogModel
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1333)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at java.util.ArrayList.readObject(ArrayList.java:593)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at ch04.LogFileOperate.readLogFile(LogFileOperate.java:32)
at ch04.Cilent.main(Cilent.java:27)
Caused by: java.io.NotSerializableException: ch04.LogModel
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at java.util.ArrayList.writeObject(ArrayList.java:570)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)readlog====null

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at ch04.LogFileOperate.writeLogFile(LogFileOperate.java:54)
at ch04.Cilent.main(Cilent.java:25)


源代码如下:



package ch04;

public class LogModel {
private String logId;

private String operateUser;

private String operateTime;

private String logContent;

public String getLogId() {
return logId;
}

public void setLogId(String logId) {
this.logId = logId;
}

public String getOperateUser() {
return operateUser;
}

public void setOperateUser(String operateUser) {
this.operateUser = operateUser;
}

public String getOperateTime() {
return operateTime;
}

public void setOperateTime(String operateTime) {
this.operateTime = operateTime;
}

public String getLogContent() {
return logContent;
}

public void setLogContent(String logContent) {
this.logContent = logContent;
}
@Override
public String toString() {
return "logID="+logId+",operateUser="+operateUser+",operateTime="+operateTime+",logContent="+logContent;
}

}



package ch04;

import java.util.List;

public interface LogFileOperateApi {
public List<LogModel> readLogFile();

public void writeLogFile(List<LogModel> list);
}



package ch04;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;

public class LogFileOperate implements LogFileOperateApi {

private String logFilePathName = "AdapterLog.log";

public LogFileOperate(String logFilePathName){
if(logFilePathName!=null&&logFilePathName.trim().length()>0){
this.logFilePathName = logFilePathName;
}
}
@Override
public List<LogModel> readLogFile() {
// TODO Auto-generated method stub
List<LogModel> list = null;
ObjectInputStream oin = null;
try{
File f = new File(logFilePathName);
if(f.exists()){
oin = new ObjectInputStream(new BufferedInputStream(new FileInputStream(f)));
}
list = (List<LogModel>) oin.readObject();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(oin!=null){
oin.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
return list;
}

@Override
public void writeLogFile(List<LogModel> list) {
// TODO Auto-generated method stub
File f = new File(logFilePathName);
ObjectOutputStream oout = null;
try{
oout= new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(f)));
oout.writeObject(list);
}catch(IOException e){
e.printStackTrace();
}finally{
try{
oout.close();
}catch(IOException e){
e.printStackTrace();
}

}
}

}



package ch04;

import java.util.ArrayList;
import java.util.List;

public class Cilent {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LogModel lml = new LogModel();

lml.setLogId("0000000000001");
lml.setOperateUser("admin");
lml.setOperateTime("2011-7-9 11:47:25");
lml.setLogContent("这仅仅是一个测试");

List<LogModel> list = new ArrayList<LogModel>();
list.add(lml);

LogFileOperateApi api = new LogFileOperate("F:\\WorkSpaces\\shejimoshi\\AdapterLog.log");

api.writeLogFile(list);

List<LogModel> readLog = api.readLogFile();

System.out.println("readlog===="+readLog);
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值