在写日志系统的时候,出于导入数据库比较方便的考虑,所以就想把用户的操作都封装在一个对象里面,然后把整个对象写到文件里面去。需要导入数据库时,再从文件中读取出对象信息,把对象写入数据库。测试的时候,对象写入文件和从文件读取对象是放在了不同的项目里,也就是说我在一个项目里执行写入操作,在另外一个项目执行读取操作。读取的项目里面的对象类是从写入操作项目里复制粘贴的。然后问题就来了,写入文件正确执行,文件里已经存在了写入的信息,但是读取文件的时候抛了异常,是classnotfoundexception,开始我还以为是类不一致导致的,经过仔细的检查,发现两个类都是一模一样的。最后看到控制台输出的信息,发现提示是找不到我那个写入的项目的xx包下的对象类,但我读取的项目里并没有xx包,于是我试着在读取的项目下新建xx包,把对象类放在xx包下,运行后结果就可以了。
结论:当用writeobject把对象写入文件的时候,应该会把对象类所在的package的信息也写入到文件中,所以当一个项目需要读取另外一个项目写入的对象文件的数据时,需要在本项目里新建和写入项目对应的xx包,并把对象类放在这个xx包下面,这样的说项目就可以正常读取,否则就会抛出classnotfoundexception。