私はこれに取り組んでおり、このエラーを取得してもエラーに指を置くことはできません:
この私のクラス:
package stdaccmdmngmt;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JOptionPane;
/**
*
* @author princess
*/
public class Student1 implements Serializable {
public static Set<Student1> listOfStudents = new HashSet<Student1>();
public static File outFile = new File("StudentRegistry.dat");
// Data memebers
private String studentID;
private String name;
private Date dateOfReg;
//Constructor
Student1(String number,String name)
{
this.studentID = number;
this.name = name;
dateOfReg = new Date();
}
public String getName()
{
return name;
}
public String getStudentID()
{
return studentID;
}
public Date getDateOfReg()
{
return dateOfReg;
}
public void register() throws FileNotFoundException, IOException, ClassNotFoundException
{
Set<Student1> sss = new HashSet<Student1>();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(outFile));
oos.writeObject(sss);
oos.close();
}
public static HashSet<Student> getListOfStudents() throws FileNotFoundException, IOException, ClassNotFoundException
{
HashSet ss;
File inFile = new File("StudentRegistry.dat");
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(inFile));
Set<Student> aNewSet = (HashSet<Student>) ois.readObject();
return (HashSet<Student>) aNewSet;
}
public static Student getStudentbyID(String a) throws FileNotFoundException, IOException, ClassNotFoundException
{
Set<Student> aNewSet = new HashSet<Student>();
aNewSet = Student.getListOfStudents();
Student result = null;
for (Student x :aNewSet)
{
if (x.getStudentID().equalsIgnoreCase(a))
{
result = x;
break;
}
}
if (result == null)
{
JOptionPane.showMessageDialog(null, "Apartment not found");
}
return result;
}
@Override
public String toString()
{
// include the code to retrieve assigned apartment
return "Name: " + name +" StudentID: "+ studentID + " Registered On: " + dateOfReg;
}
@Override
public boolean equals(Object another)
{
Student1 stud = (Student1)another;
return this.name.equals(stud.name)&& this.studentID.equals(stud.studentID);
}
@Override
public int hashCode()
{
int hash = name.hashCode();
return hash;
}
}
これはテストクラスです:
package stdaccmdmngmt;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author princess
*/
public class Test {
public static void main (String[]args) throws FileNotFoundException, ClassNotFoundException, IOException
{
Student1 s = new Student1("12345","Sasha");
try {
s.register();
} catch (FileNotFoundException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
Set<Student> nnn;
nnn = Student.getListOfStudents();
for (Student x : nnn)
System.out.println(x.toString());
}
}
* @author princess
*/
public class Student1 implements Serializable {
public static Set<Student1> listOfStudents = new HashSet<Student1>();
public static File outFile = new File("StudentRegistry.dat");
// Data memebers
private String studentID;
private String name;
private Date dateOfReg;
//Constructor
Student1(String number,String name)
{
this.studentID = number;
this.name = name;
dateOfReg = new Date();
}
public String getName()
{
return name;
}
public String getStudentID()
{
return studentID;
}
public Date getDateOfReg()
{
return dateOfReg;
}
public void register() throws FileNotFoundException, IOException, ClassNotFoundException
{
Set<Student1> sss = new HashSet<Student1>();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(outFile));
oos.writeObject(sss);
oos.close();
}
public static HashSet<Student> getListOfStudents() throws FileNotFoundException, IOException, ClassNotFoundException
{
HashSet ss;
File inFile = new File("StudentRegistry.dat");
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(inFile));
Set<Student> aNewSet = (HashSet<Student>) ois.readObject();
return (HashSet<Student>) aNewSet;
}
public static Student getStudentbyID(String a) throws FileNotFoundException, IOException, ClassNotFoundException
{
Set<Student> aNewSet = new HashSet<Student>();
aNewSet = Student.getListOfStudents();
Student result = null;
for (Student x :aNewSet)
{
if (x.getStudentID().equalsIgnoreCase(a))
{
result = x;
break;
}
}
if (result == null)
{
JOptionPane.showMessageDialog(null, "Apartment not found");
}
return result;
}
@Override
public String toString()
{
// include the code to retrieve assigned apartment
return "Name: " + name +" StudentID: "+ studentID + " Registered On: " + dateOfReg;
}
@Override
public boolean equals(Object another)
{
Student1 stud = (Student1)another;
return this.name.equals(stud.name)&& this.studentID.equals(stud.studentID);
}
@Override
public int hashCode()
{
int hash = name.hashCode();
return hash;
}
}
...................................
そして、私はこのエラーが発生しています:
run:
Exception in thread "main" java.io.InvalidClassException: stdaccmdmngmt.Student; local class incompatible: stream classdesc serialVersionUID = -3040096452457271695, local class serialVersionUID = -4849175799723926283
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at java.util.HashSet.readObject(HashSet.java:291)
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 stdaccmdmngmt.Student.getListOfStudents(Student.java:76)
at stdaccmdmngmt.Test.main(Test.java:34)
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)
何か助けはありますか?
前もって感謝します :)