그동안 에러 메세지가 콘솔에 뜨면 내가 작성한 함수부분만 읽고 말았었는데
오늘 제대로 에러 읽는 법을 배웠다.
짝꿍이 알려줬다.
코드가 한줄 한줄 실행될때 함수 등을 호출한 순서대로 에러메세지가 아래에서 부터 쌓여 출력된다.
위 에러를 보면 아래에서부터 내가 작성한 함수 main> Run> save까지 타고 그다음부터는 자바 내장(?)함수들을 탄 순서가 나타나있다.
내가 작성한 함수 가장 마지막 line으로 가서 한번 확인하고 에러메세지 가장 상단의 에러메세지를 읽으면 된다.
내가 작성한 함수 BookManager.java:76에서 에러
out.writeObject(book_dic);
에러 메세지 : java.io.NotSerializableException
오늘 배운 I/O가 아직 개념이 덜 잡혀서 메세지를 보고도 모르겠..
직접 내장함수를 들어가서 봤더니
Serializable하지 않은 객체의 이름을 불러올 수 없다는 말인것 같다.
// out.writeObject(book_dic);의 book_dic은
//Book객체들을 HashMap으로 담고있다.
HashMap<String, Book> book_dic = new HashMap<String, Book>();
book_dic은 문제가 없어보이니 Book객체로 들어가야한다.
Book 객체에 implements Serializable을 추가했다.
에러해결!