I';我正在用Java做一个学生管理项目,并得到可序列化的异常错误

I';我正在用Java做一个学生管理项目,并得到可序列化的异常错误,java,exception,serialization,console,notserializableexception,Java,Exception,Serialization,Console,Notserializableexception,我正在做一个基本的学生管理应用程序,它运行在控制台上,只有两个功能:添加学生和显示学生列表。但是,尽管我实现了序列化,但我在可序列化异常中得到了错误。我的课程如下 班级学生 import java.io.Serializable; 公共类学生实现可序列化{ 私有字符串名称; 私有int-id; 私人性别; 私人浮动gpa; 私有静态最终长serialVersionUID=1L; 公立学生(){} 公立学生(字符串名称、整数id、整数性别、浮动gpa){ 超级(); this.name=名称; t

我正在做一个基本的学生管理应用程序,它运行在控制台上,只有两个功能:添加学生和显示学生列表。但是,尽管我实现了序列化,但我在可序列化异常中得到了错误。我的课程如下

班级学生

import java.io.Serializable;
公共类学生实现可序列化{
私有字符串名称;
私有int-id;
私人性别;
私人浮动gpa;
私有静态最终长serialVersionUID=1L;
公立学生(){}
公立学生(字符串名称、整数id、整数性别、浮动gpa){
超级();
this.name=名称;
this.id=id;
这个。性别=性别;
this.gpa=gpa;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共性别{
返回性别;
}
公共性别(国际性别){
这个。性别=性别;
}
公共浮点getGpa(){
返回gpa;
}
公共无效设置gpa(浮动gpa){
this.gpa=gpa;
}
}
学生道班

import java.io.BufferedInputStream;
导入java.io.BufferedOutputStream;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.ObjectInputStream;
导入java.io.ObjectOutputStream;
导入java.io.OutputStream;
导入java.io.Serializable;
导入java.io.SerializablePermission;
导入java.util.ArrayList;
导入java.util.List;
导入javax.sql.rowset.serial.SerialException;
公立班学生{
私有静态最终字符串STUDENT\u FILE\u NAME=“studentRecord.txt”;
/**
*将学生列表保存到文件
*@param studentList:列出要保存的学生
*/
公共无效写入(列表学生列表){
FileOutputStream=null;
ObjectOutputStream oos=null;
试一试{
fos=新文件输出流(新文件(学生文件名));
oos=新对象输出流(fos);
oos.writeObject(学生列表);
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}最后{
封闭流(fos);
闭流(oos);
}
}
/**
*从文件中读取学生列表
*@返回名单学生
*/
public List read()引发序列化异常{
List studentList=new ArrayList();
FileInputStream fis=null;
ObjectInputStream ois=null;
试一试{
fis=新文件输入流(新文件(学生文件名));
ois=新的ObjectInputStream(fis);
studentList=(List)ois.readObject();
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}catch(classnotfounde异常){
e、 printStackTrace();
}最后{
闭流(fis);
封闭流(ois);
}
返回学生名单;
}
/**
*关闭输入流
*/
私有void closeStream(InputStream为){
如果(is!=null){
试一试{
is.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
/**
*关闭输出流
*/
私有void closeStream(OutputStream os){
如果(os!=null){
试一试{
os.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
}
学生管理班级

import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
导入javax.sql.rowset.serial.SerialException;
公共班级学生管理{
StudentDAO-stdao;
名单;
扫描仪sc=新的扫描仪(System.in);
公共学生管理(){
试一试{
stdao=新学生dao();
list=stdao.read();
}捕获(串行异常){
e、 printStackTrace();
}
}
公共无效添加(){
系统输出打印(“输入学生id\t”);
int id=sc.nextInt();
System.out.println();
System.out.print(“输入学生姓名\t”);
字符串名称=sc.next();
System.out.println();
System.out.print(“选择性别:\t[男性]或[女性]?”;
int性别=-1;
字符串tempGender=sc.next();
if(临时性别平等信号(“男性”)){
性别=1;
}else if(tempGender.equalsIgnoreCase(“女性”)){
性别=0;
}
System.out.println();
系统输出打印(“输入学生GPA\t”);
float gpa=sc.nextFloat();
学生=新生(姓名、身份证、性别、gpa);
列表。添加(学生);
编写(列表);
}
//看法
公开作废展示清单(){
学生(s:名单){
System.out.printf(“%5d%10s%5s%10s\n”);
System.out.printf(“%5d%10s%5s%10s”、s.getId()、s.getName()、s.isGender()、s.getGpa());
}
}
}
这是主课程

import java.util.List;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
学生管理=新学生管理();
扫描仪sc=新的扫描仪(System.in);
字符串choose=sc.next();
布尔退出=假;
createMenu();
while(true){
开关(选择){
案例“1”:
management.add();
打破
案例“6”:
management.showList();