Как исправить "ClassNotFoundException"? - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь читать и записывать объекты класса Doctor в файл.Я продолжаю получать это «ClassNotFoundException», которое мешает мне скомпилировать код.

Я пытался использовать тот же метод для других файлов, который, кажется, работает нормально.

Я получаю ошибку компиляции встрока вектор существующий_в = (вектор) aois.readObject ();

    package com.example.docapp;

    import java.io.*;
    import java.util.*;

    public class Admin implements Serializable {

       public void addDoctor(Doctor D) throws Exception {
          String url = "com\\example\\docapp\\doctorslist.txt";
          File f = new File(url);

          FileOutputStream afos = new FileOutputStream(f);
          ObjectOutputStream aoos = new ObjectOutputStream(afos);

          if(!f.exists()) { // If file doesnt exist creating and insert a new vector
             Vector<Doctor> v = new Vector<Doctor>();
             v.add(D);
             aoos.writeObject(v);
          }
          else { // Extract the existing vector and add the object to it
             FileInputStream afis = new FileInputStream(f);
             ObjectInputStream aois = new ObjectInputStream(afis);
             Vector<Doctor> existing_v = (Vector<Doctor>)aois.readObject();

             existing_v.add(D);
             aoos.writeObject(existing_v);
             aois.close();
             afis.close();
          }

          System.out.println("\n\nSuccessfully added " + D.name);

          aoos.close();
          afos.close();
       }
    }

1 Ответ

0 голосов
/ 11 июня 2019

Класс Admin на самом деле не должен быть сериализуемым.Вам нужно сделать так, чтобы класс Doctor реализовывал Serializable.

. Кроме того, при инициализации FileOutputStream он создаст файл, если он не существует.После этого !f.exists() никогда не станет истинным, и это испортит вашу попытку прочитать объект.

public void addDoctor(Doctor D) throws Exception {
    String url = "com\\example\\docapp\\doctorslist.txt";
    File f = new File(url);

    FileOutputStream afos;
    ObjectOutputStream aoos;

    if (!f.exists()) { // If file doesnt exist creating and insert a new vector
        afos = new FileOutputStream(f);
        aoos = new ObjectOutputStream(afos);
        Vector<Doctor> v = new Vector<Doctor>();
        v.add(D);
        aoos.writeObject(v);
    } else { // Extract the existing vector and add the object to it
        FileInputStream afis = new FileInputStream(f);
        ObjectInputStream aois = new ObjectInputStream(afis);
        Vector<Doctor> existing_v = (Vector<Doctor>) aois.readObject();

        existing_v.add(D);

        afos = new FileOutputStream(f);
        aoos = new ObjectOutputStream(afos);
        aoos.writeObject(existing_v);
        aois.close();
        afis.close();
    }

    System.out.println("\n\nSuccessfully added " + D.name);

    aoos.close();
    afos.close();
}
...