java.io.NotSerializableException
이 예외가 있는데 왜 던져 지는지, 어떻게 처리해야하는지 이해할 수 없습니다.
try {
os.writeObject(element);
} catch (IOException e) {
e.printStackTrace();
}
Atom 클래스의 다른 인스턴스를 포함하는 element
은 어디에 있습니까?TransformGroup
TransformGroups
public class Atom extends Group implements Serializable{
float pozX,pozY;
Group group= new Group();
Color3f blue = new Color3f(new Color(255));
Color3f black = new Color3f(new Color(0));
Sphere AtSph=new Sphere();
public Atom(final float WEIGHT, final int BOUNDS,final float radius,Color3f color)
{
AppSetting ap= new AppSetting(color, black);
AtSph=new Sphere(radius,1,100,ap);
}
}
전체 오류 로그 :
java.io.NotSerializableException: javax.media.j3d.TransformGroup
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at cls.MolecularBuilder.addAtom(MolecularBuilder.java:511)
at cls.MolecularBuilder$Console.HidrogenItemActionPerformed(MolecularBuilder.java:897)
at cls.MolecularBuilder$Console$2.actionPerformed(MolecularBuilder.java:746)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
참고 : AppSetting (Atom 클래스에서)은 Appearance를 확장하는 사용자 정의 클래스입니다.
개체의 필드에는 해당 필드가 있으며 그중 일부는 Serializable
. 귀하의 경우 위반 클래스는 TransformGroup
. 그것을 해결하는 방법?
- 수업이 당신 것이라면, 그것을 만드십시오
Serializable
- 클래스가 타사이지만 직렬화 된 형식으로 필요하지 않은 경우 필드를 다음과 같이 표시합니다.
transient
- if you need its data and it's third party, consider other means of serialization, like JSON, XML, BSON, MessagePack, etc. where you can get 3rd party objects serialized without modifying their definitions.
Sometimes "java.io.NotSerializableException" occurs when you serialize an inner class instance because:
"serializing such an inner class instance will result in serialization of its associated outer class instance as well"
"Serialization of inner classes (i.e., nested classes that are not static member classes), including local and anonymous classes, is strongly discouraged"
Ref: The Serializable Interface
Make the class serializable by implementing the interface java.io.Serializable
.
java.io.Serializable
- Marker Interface which does not have any methods in it.- Purpose of Marker Interface - to tell the
ObjectOutputStream
that this object is a serializable object.
참고URL : https://stackoverflow.com/questions/13895867/java-io-notserializableexception
'code' 카테고리의 다른 글
주어진 입력과 관련된 html 레이블 찾기 (0) | 2020.08.21 |
---|---|
Android에서 스피너에 항목을 추가하려면 어떻게해야합니까? (0) | 2020.08.21 |
서블릿 관련 클래스에서 이름으로 JSF 관리 Bean 가져 오기 (0) | 2020.08.21 |
GooglePlayServicesUtil 대 GoogleApiAvailability (0) | 2020.08.21 |
그림자 확산 및 흐림을 제어하는 방법은 무엇입니까? (0) | 2020.08.21 |