Warning-The serializable class Object does not declare a static final serialVersionUID field of type long

CODEDRAGON Development/Java

반응형

   

   

경고 메시지

The serializable class UserException does not declare a static final serialVersionUID field of type long

  

   

   

발생원인

  • 상속받은 부모클래스중에서 Serializable 인터페이스를 구현하고 있기 때문입니다.
  • 클래스의 extends를 따라가 보면 부모클래스에 implements Serializable 인터페이스가 있습니다. 그래서 serializable을 상속하는 상위 클래스가 있거나 혹은 인터페이스를 구현하거나 인터페이스를 구현한 클래스를 상속받았기 때문입니다. (직접적으로 또는 간접적인 Serializable인터페이스가 구현되어 있기 때문)

   

  • 이클립스가 프로그래머에게 직렬화에 직간접적으로 영향을 받고 있음을 경고 메시지로 알려주고 있으며
  • 현재 프로그래밍적으로 직렬화로 인한 버전 불일치가 일어날 일은 거의 없어 해당 경고 메시지는 무시해도 상관은 없습니다. (경고 표시 되지 않게 하기: http://codedragon.tistory.com/2659)

   

   

   

해결방법

JAVA 에서는 직렬화의 대상이 되는 인스턴스에 대해 명시적으로 serialVersionUID를 선언할 것을 권장하고 있습니다.

serialVersionUID를 생성 방법

Add default serial version ID

Add generated serial version ID

@SuppressWarnings("serial") 어노테이션 처리 방법(추천)

Add @SuppressWarnings 'serial' to Object

   

   

Add default serial version ID 방법

경고메시지가 나오는 구문에 마우스 커스를 가져간 다음 나오는 창에서

Add default serial version ID 링크 클릭

   

   

   

Add generated serial version ID 방법

경고메시지가 나오는 구문에 마우스 커스를 가져간 다음 나오는 창에서

Add generated serial version ID 링크 클릭

   

   

   

@SuppressWarnings("serial") 어노테이션 처리 방법

경고메시지가 나오는 구문에 마우스 커스를 가져간 다음 나오는 창에서

Add @SuppressWarnings 'serial' to 'UserException' 링크 클릭

   

바로 위에 @SuppressWarnings("serial") 어노테이션 처리 됩니다.