public static Reservation[] openBinaryFile( String fileName )
{
Reservation [] objArray = null;
try
{
ObjectInputStream inStream = new ObjectInputStream(
new FileInputStream( fileName ) );
objArray = (Reservation[])inStream.readObject();
inStream.close();
}
catch( ClassNotFoundException e )
{
System.out.println( "Exception: ClassNotFoundException." );
}
我有课程,但为什么我会得到例外?该类与其他类包含在同一个包中。为什么我得到这个例外?
编辑:这是堆栈跟踪 跑: java.lang.ClassNotFoundException:保留 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:604) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1624) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at myViewer.DatabaseFile.openBinaryFile(DatabaseFile.java:42) at myViewer.Viewer。(Viewer.java:175) 在myViewer.Viewer.main(Viewer.java:188)
答案 0 :(得分:1)
两件事:
Reservation[]
Reservation
的子类型(例如VIPReservation
),那么您需要该类型的二进制文件Reservation
立即采取行动:
查看堆栈跟踪,它希望Reservation
位于默认包中。确保是这种情况。
答案 1 :(得分:0)
有问题的类文件与最初序列化实例的类文件的版本不同。将其对齐或同时给它们serialVersionUID
。
答案 2 :(得分:0)
究竟是什么让你例外? e.printStackTrace()
会告诉你。也许你没有import java.io.ObjectInputStream
?