2012-06-06 5 views
0

ObjectInputStream을 사용하여 .dat 파일에서 객체 배열 (PWlist)을 읽으려고합니다. 배열에는 LongPWPinPW이라는 두 개의 서로 다른 개체가 포함되어 있습니다. 내가 읽기를 수행하려고 할 때, 나는이 예외를 얻고있다 ...ObjectInputStream이 NotSerializableException을 던지고

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: PinPW 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332) 
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1666) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1322) 
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
at Handler.fromFile(Handler.java:99) 
at Window$ButtonListener.actionPerformed(Window.java:104) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
at java.awt.Component.processMouseEvent(Component.java:6375) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
at java.awt.Component.processEvent(Component.java:6140) 
at java.awt.Container.processEvent(Container.java:2083) 
at java.awt.Component.dispatchEventImpl(Component.java:4737) 
at java.awt.Container.dispatchEventImpl(Container.java:2141) 
at java.awt.Component.dispatchEvent(Component.java:4565) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210) 
at java.awt.Container.dispatchEventImpl(Container.java:2127) 
at java.awt.Window.dispatchEventImpl(Window.java:2482) 
at java.awt.Component.dispatchEvent(Component.java:4565) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684) 
at java.awt.EventQueue.access$000(EventQueue.java:85) 
at java.awt.EventQueue$1.run(EventQueue.java:643) 
at java.awt.EventQueue$1.run(EventQueue.java:641) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
at java.awt.EventQueue$2.run(EventQueue.java:657) 
at java.awt.EventQueue$2.run(EventQueue.java:655) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:654) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

누군가가 나에게 무엇이 잘못되었는지를 이해하는 데 도움이 시겠어요

+0

나는 오류 메시지와 그 이상의 소스 코드를 적게 권장합니다. –

+0

ObjectOutputStream을 사용하여 .dat 파일을 작성 했습니까? 그렇지 않으면 작동하지 않습니다. – bmargulies

+1

당신은 * 모든 것을 시도하지 않았거나 아래 주어진 해결책을 찾았을 것입니다. Javadoc의 외형에 의해'NotSerializableException'을 읽지도 않았습니다. – EJP

답변

5

java.io.NotSerializableException: PinPW는 PinPW이 PinPW에 따라서 마크 직렬화 할 수없는 클래스 의미 Serializable를 구현하십시오

public class PinPW implements Serializable { 

} 
+0

때문이다 : '공용 클래스 PinPW는 정보를 구현 확장 직렬화 { } 공용 클래스 longPW이 정보가 직렬화 { } 괜찮 ' – Max

+0

, 당신이 당신의 읽기를 표시하고 쓸 수있는 방법을 구현 확장? – mprabhat