Java - ClassNotFoundException我包含了类,但为什么会出现异常?

时间:2010-03-11 21:01:24

标签: java

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)

3 个答案:

答案 0 :(得分:1)

两件事:

  • 确保您实际上正在阅读Reservation[]
    • 如果您正在阅读Reservation的子类型(例如VIPReservation),那么您需要该类型的二进制文件
  • 确保它与Reservation
  • 的确切版本相同

立即采取行动:

  • 诊断堆栈跟踪。

查看堆栈跟踪,它希望Reservation位于默认包中。确保是这种情况。

答案 1 :(得分:0)

有问题的类文件与最初序列化实例的类文件的版本不同。将其对齐或同时给它们serialVersionUID

答案 2 :(得分:0)

究竟是什么让你例外? e.printStackTrace()会告诉你。也许你没有import java.io.ObjectInputStream