【问题标题】:How to handle java.io.InvalidClassException? [duplicate]如何处理 java.io.InvalidClassException? [复制]
【发布时间】:2013-12-08 02:02:22
【问题描述】:

请告诉我我做了什么,这个异常即将到来,我不知道如何删除它

java.io.InvalidClassException: applyonline.Applicant;本地班 不兼容:流 classdesc serialVersionUID = 8333391523914038903, 本地类serialVersionUID = -6432228733925744354

    public class Applicant implements Serializable{

        public String getId() {
            return id;
        }

        public String getPassword() {
            return password;
        }

        public void setId(String id) {
            this.id = id;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public Applicant() {
        }
        public boolean checkLogin(String id,String pasword) throws SQLException, IOException, ClassNotFoundException
        {
            db dbhandlerobj=new db();
            ArrayList<Object> appList;
 /*  ----> */   appList = dbhandlerobj.getObject("Applicant","ApplicantInfo"); /* <------*/
            for(Object obj: appList)
            {
                Applicant app=(Applicant)obj;
                System.out.println("ID:::::"+app.getId());
                if(app.getId().equals(id) && app.getPassword().equals(pasword))
                {
                    return  true;
                }
            }
            return false;
        }
        private String id;
        private String password;
    }

或映射器类

public class db {
    Connection con;
    String host="jdbc:derby://localhost:1527/Hamza";
    String userName="Hamza";
    String pasword="123";
    public db() throws SQLException {

        this.con =DriverManager.getConnection(host, userName, pasword);
    }
    public void storeObject(Object object,String name) throws IOException, SQLException
    {
        PreparedStatement ps;
        ByteArrayOutputStream baos =new ByteArrayOutputStream();
        ObjectOutputStream obos=new ObjectOutputStream(baos);
        obos.writeObject(object);
        obos.flush();
        obos.close();
        baos.close();
        byte []data=baos.toByteArray();
        String sql="insert into "+name+" values(?)";
        ps=con.prepareStatement(sql);
        ps.setObject(1,data);
        ps.executeUpdate();
    }
    public ArrayList<Object> getObject(String tableName,String columnName) throws SQLException, IOException, ClassNotFoundException 
    {
        PreparedStatement ps;
        String sql="select * from "+tableName;
        ps=con.prepareStatement(sql);
        ResultSet rs=ps.executeQuery();
        ArrayList<Object> studentList=new ArrayList<Object>();
        while(rs.next())
        {
            try (ByteArrayInputStream bais = new ByteArrayInputStream(rs.getBytes(columnName))) {
                ObjectInputStream obis;
                obis = new ObjectInputStream(bais);
                studentList.add((Object)obis.readObject()); //<----ERROR IN THIS METHOD
            }
        }        
        return studentList;
    }  
}**

【问题讨论】:

    标签: java database serialization ooad or-mapper


    【解决方案1】:

    您正在使用不同版本的申请者类。也许您首先将申请人类对象写入数据库,然后修改了该类。这就是您收到此消息的原因。

    再次将对象写入数据库,然后尝试反序列化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-02
      • 2013-03-29
      • 2016-07-28
      • 2022-01-23
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多