Java 尝试进行反序列化时键入强制转换错误

Java 尝试进行反序列化时键入强制转换错误,java,typecasting-operator,Java,Typecasting Operator,当我将Customer类与调用它的函数放在同一个源包中时,为什么会出现错误“java.lang.ClassNotFoundException:Customer” public void getEmployee() { Customer cu =null; try { Customer e = new Customer(); FileInputStream fileIn = new FileInputStream("Customers.ser");

当我将Customer类与调用它的函数放在同一个源包中时,为什么会出现错误“java.lang.ClassNotFoundException:Customer”

public void getEmployee() {
Customer cu =null;
  try {
     Customer e = new Customer();
     FileInputStream fileIn = new FileInputStream("Customers.ser");
     ObjectInputStream in = new ObjectInputStream(fileIn);
     cu =(Customer) in.readObject();
     in.close();
     fileIn.close();
  } catch (IOException i) {
     i.printStackTrace();
     return;
  } catch (ClassNotFoundException c) {
     System.out.println("Employee class not found");
     c.printStackTrace();
     return;
  }
}

如果函数没有返回任何内容,为什么要将其称为getter?不过,我可以马上指出代码中的一些错误。
fileIn.close()行是冗余的。流已由.close()中的
关闭。
。最重要的是,你不需要那些
return语句。基本上,您可以将代码简化为:

public void getEmployee(){
试一试{
客户e=新客户();
FileInputStream fileIn=newfileinputstream(“Customers.ser”);
ObjectInputStream in=新的ObjectInputStream(fileIn);
Customer cu=(Customer)in.readObject();
in.close();
}捕获(IOException | ClassNotFoundException e){
e、 printStackTrace();
}
}

编辑
请稍候。如果您得到的是
“java.lang.ClassNotFoundException:Customer”
,那么问题不在这里。它很可能在序列化部分。您可能正在尝试将一个空白文件强制转换到客户。在文本编辑器中打开保存的
Customers.ser
。如果您没有看到存储的数据的外观,则可能是序列化问题。

我认为我们无法从您在此处显示的内容中了解您的问题所在。理想情况下,您应该显示此方法来自的整个文件以及文件名。还提供Customer类的整个文件。如果这些文件太大而不能这样做,那么就删掉不重要的信息,但保留所有的结构,因为这对这个问题很重要。然后,向我们解释这两个文件在磁盘上的相对位置。“同一个源程序包”是否意味着这两个文件在同一个目录中?这令人困惑。你能告诉编译器指出哪一行代码吗?