/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=59712:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/jre/lib/rt.jar:/Users/eunchanyang/Desktop/java/javaStudy/out/production/javaStudy:/Users/eunchanyang/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.10/kotlin-stdlib-jdk8-1.6.10.jar:/Users/eunchanyang/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.6.10/kotlin-stdlib-1.6.10.jar:/Users/eunchanyang/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/Users/eunchanyang/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.10/kotlin-stdlib-common-1.6.10.jar:/Users/eunchanyang/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.10/kotlin-stdlib-jdk7-1.6.10.jar InputAndOutput.ioStudy22
java.io.NotSerializableException: java.lang.Object
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
해당 예외는 직렬화 수행 시 발생한다.
- 원인
1) 직렬화 작업을 수행하려고 했으나 해당 객체에 Serializable 인터페이스가 구현되어있지 않다.
2) 인스턴스 변수에 Object 객체가 포함되어 있다.
1번 문제일 경우 Serializable는 비어있는 인터페이스이기 때문에 그냥 클래스 옆에 implements로 붙여주기만 하면 된다.
하지만 나의 경우는 이미 Serializable를 구현하고 있다. Object가 인스턴스 변수로 선언되어 있는 것이 문제다.
그렇다고 이 코드를 아예 삭제할 필요는 없다. Object 앞에 (혹은 다른 인스턴스 변수 앞에) transient를 붙여준다면 그타입의 기본값으로 직렬화를 처리한다.
정상적으로 실행되는 것을 확인할 수 있다.
'Language & Framework > Java' 카테고리의 다른 글
Interface와 Abstract의 차이는 무엇인가? - - 22/08/07 내용 추가 (0) | 2022.07.13 |
---|---|
자바 예외 (2) java.io.InvalidClassException: InputAndOutput.Child; no valid constructor (0) | 2022.06.22 |
자바 ArrayList와 LinkedList는 무엇인가? 성능 비교 (+ Vector..?) (0) | 2022.06.12 |
자바 Wrapper 클래스의 기본 활용 (0) | 2022.06.09 |
자바 Math 클래스의 기본 활용 (0) | 2022.06.09 |