이전 포스트에서 이클립스에서 class파일을 디컴파일하는 방법을 소개한 적이 있다.

헌데 간혹 jd-eclipse로 디컴파일이 되지 않는다는 분이 계셔서 확인해보았다.

class 파일을 열면 열리지 않고 에러문구만 다음과 같이

....could not be initialized... 라면서 재설치를 하라고 나온다... 

 

이런 문의가 있어서 테스트를 해봐도 이상이 없었는데

새로이 XP를 설치한 경우에야 동일 증상을 발견하고

그 이유를 알게 되었다.

이클립스 플러그인 외에 OS가 윈도우즈인 경우 (다른 OS는 상관없는 듯 ...)

 "Microsoft Visual C++ 2008 SP1 Redistributable Package" 가 설치되어 있어야 한다.

 

커스텀XP를 사용시 위 패키지 설치를 제한하는 경우가 있는데 이  라이브러리가 설치되지 않아

jd-eclipse가 초기화되지 않아서 발생한 문제였다.

 

참고로 이클립스 3.5 버젼에서 Equinox/p2 plug-in 을 설치하는 방법이 이전(3.4)와 조금 달라..

함께 끄적여 본다..

 

 

이클립스 3.5 버젼에서 Install Software 화면에서 하단의 Group items by category 항목이

기본적으로 체크되어 있는데 이 부분을 체크해제하면 위와 같이 Equinox p2 Provisioning 항목을 확인할 수 있다.

 

 
데이타의 전송은 객체건 뭐건 결국 바이트의 흐름으로 전송하게 된다. 저장도 그렇고...
다시 읽었을 때 객체의 자료구조를 그대로 보존하지 않으면 않된다.(일명 Serialzation)
자바에선 Serializable 인터페이스만 구현하면 알아서 이를 보장해주기에 단지 implements Serializable 만 추가하면 된다.
 
일전에도 언급한 적이 있지만 5.0 이후부터는 Serialzable 인터페이스를 구현한 클래스에서
 static final long 타입의 serialVersionUID 상수를 선언하라는 경고문구를
이클립스의 노란 warning 아이콘과 더불어 확인 할 수 있다.
 
만일 serialVersionUID를 지정하지 않으면 실행시점에서 JVM이 디폴트 값을 산정하게 되며,
그 알고리즘은 Java(TM) Object Serialization Specification 정의된 것을 따른다고 한다.
한마디로 굳이 신경 쓸필요는 없다는 뜻이고 이클립스내에서 이 경고아이콘을 제외하도록 설정할 수도 있다.
 
그러나 모든 serialization이 필요한 클래스에는 명시적으로 serialVersionUID를 선언해줄것을 강력하게 권유하고 있는데
그 이유는  디폴트 serialVersionUID 계산은 클래스의 세부 사항을 매우 민감하게 반영하기 때문에 컴파일러 구현체에 따라서 달라질 수 있어 deserialization(serialization 했던 객체를 복구하는 과정)과정에서 예상하지 못한 InvalidClassExceptions을 유발할 수 있다.
라는 것이 그 이유란다.
 
즉 서로 다른 자바 컴파일러 구현체 사이에서도 동일한 serialVersionUID값을 얻기 위해서는 명시적으로 serialVersionUID값을 선언해야 하며 가능한 serialVersionUID을 private으로 선언하라는 것이다.
(상속되어 쓰여지는 것은 유용하지 않고, 해당 클래스에서만 쓰일 것이기 때문에....)
 
이궁 이렇게 이야기하는데 한줄 더 써주지 머...
ㅋ 말은 이리 하지만 무진장 귀찮다. serialver.exe를 이용하면 된다는데 다른 건 없나 찾아보게 되었다
 
첨부파일을 압축을 풀고 이클립스 플러그인 디렉토리에 넣어두면 자동생성 플러그인 설치는 끝
3.3에서도 이상없이 작동한다. 사용방법은 다음과 같다.
파일을 선택 마우스 오른클릭하면
Add serialVersionUID 라는 메뉴가 추가 되어 있는것을 확인할 수 있다. 클릭...
 
 
 
그러면 다음과 같이 클래스에 serialVersionUID가 자동 생성되었슴을 확인할 수 있다.
간단히 private 만 적어주면 끝...
 
 

PS. 이클립스 3.3 이후부터는 해당플러그인을 설치할 필요없이 노란 Warning 경고 아이콘 부분을 클릭한 후 add generated serial version UID 를 선택하면 UID가 자동생성됩니다.
 
 
 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)