以下程序运行时出现如下错误,求解
错误信息如下:
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);
}
}
分享到:
相关推荐
分治算法,求解最大连续子序列和问题,python实现。 分治算法是一种通过将复杂问题分解为更小的子问题,递归求解这些子问题,然后将结果合并以得到原问题的解的算法策略。以下是对分治算法求解最大连续子序列和问题...
在这个特定的课程设计中,我们关注的是“单循环赛中选手胜负序列求解问题”。这是一个典型的图论问题,与实际的体育赛事排名规则紧密相关,比如篮球比赛或围棋比赛的积分制。 首先,我们要理解单循环赛的规则。在单...
最长公共子序列(Longest Common Subsequence,LCS)是计算机科学中一种经典的字符串处理问题,广泛应用于数据挖掘、文本比较、生物信息学等领域。它指的是在不考虑字符顺序的情况下,两个或多个字符串共有的最长的...
总结,"求解最长公共子序列问题的可视化界面实现源码"是一个结合了算法理论与图形用户界面设计的项目。通过这样的实现,学习者不仅可以深入理解LCS算法,还能提升编程和交互式设计的能力。压缩包中的"LCS"文件可能...
在实际应用中,需要首先证明问题满足最优性原理,然后建立状态的递推关系式,最后通过优化的算法避免重复计算,如使用记忆化搜索或自底向上的填充表格。 例如,多段图问题是一个典型的动态规划应用场景。多段图是由...
因此,动态规划方法注重寻找状态转移过程中最优的决策序列,以实现总成本或其他目标的最小化。 在生产存货动态规划问题的Matlab求解过程中,我们通常从最终目标出发,逆向计算每个阶段的最优策略。这种方法之所以...
此外,多目标优化也可能被考虑,例如同时最小化总距离和时间,这正是“使用遗传算法求解邮递员问题,从而可以同时求得多个最优解”这一描述所暗示的。 总之,遗传算法为解决邮递员问题提供了一种有效的途径,通过C#...
车间调度问题(Job Shop Scheduling Problem,JSSP)是运营管理领域中的一个重要问题,涉及到如何在有限的时间和资源内合理安排一系列任务在多个设备上的执行顺序,以达到优化目标,如最小化总加工时间或最大化的...
具体而言,DIDO首先使用Legendre多项式对状态和控制变量进行逼近,然后将问题转化为一个非线性规划问题(NLP),并通过序列二次规划(SQP)算法SNOPT进行求解。 #### 四、伪谱法与其他方法的比较 最优控制问题的求解...
### 单循环赛中选手胜负序列求解问题 #### 问题背景 在计算机科学与技术领域,特别是数据结构与算法课程中,经常会遇到各种实际问题的抽象化与数学建模。其中,单循环赛中选手胜负序列求解问题是这类课程中的一个...
程序代码提供了一个 C++ 实现,通过包含头文件和宏定义来初始化动态规划数组 dp 的大小,并定义了求解最长公共子序列长度的 LCSlength 函数和反向构建最长公共子序列的 Buildsubs 函数。main 函数中初始化了两个示例...
最大子序列和问题可被形式化地定义为:给定一个整数序列 \( A_1, A_2, \ldots, A_N \),寻找该序列中具有最大和的一个连续子序列。若所有整数均为负数,则最大子序列的和规定为0。 **示例:** 对于序列 -2, 11, -4...
本资料“GA求解车间调度问题matlab代码.zip”提供了使用MATLAB编程实现遗传算法解决车间调度问题的实例,对于学习和研究优化算法以及工业工程领域的实践者具有极高的参考价值。 首先,我们要理解车间调度问题(Job ...
这个问题在实际应用中广泛出现,例如在物流配送、电路设计、基因序列分析等领域。 人工蜂群算法(Artificial Bee Colony Algorithm, ABC)是一种模拟蜜蜂采蜜行为的全局优化算法,由Karaboga在2005年提出。ABC算法...
【遗传算法求解VRP问题】是利用生物进化过程中自然选择和遗传机制的模拟来解决复杂优化问题的一种方法。在MATLAB环境中应用遗传算法,可以有效地寻找车辆路径问题(Vehicle Routing Problem, VRP)的最优解决方案。 ...
在这个问题中,变邻域搜索算法(Variable Neighborhood Search, VNS)是一种有效的求解策略。MATLAB是一种广泛用于数值计算和科学计算的高级编程语言,适合实现这类复杂算法。 VNS_TSP.m 是主程序文件,它通常会...
在这个场景中,我们关注的是“Java动态规划求解最长公共子序列问题”。最长公共子序列(Longest Common Subsequence, LCS)是两个给定序列的子序列,且这个子序列是两序列中最长的,但它不一定是连续的。此问题在...