목차
1. JadClipse plugin
바이트코드(.class)파일을 .java로 Decompiling 해주는 플러그인
⎼class 확장자로 제공되는 라이브러리의 소스를 파악할 수 있다.
그렇지만 jadEclipse는 JUNO 버전부터는 Jad가 설치가 안된다…이런줸장..
그래서 JD-eclipse를 설치하자..
이클립스에서 JD-Eclipse 플러그인 설치
Help > Install New Software 에서 다음 주소 입력 후 JD-Eclipse 설치.
2. ObjectAid UML Explorer
- ObjectAid UML Explorer는 클래스 간의 관계를 파악할 수 있다.
설치방법(Install New Software.. 이용하여 설치)
Install New Software.. -> Add… 버튼 클릭
-> Add repository에 Name과 Location이 있는데
Name : ObjectAid UML Explorer 입력
Location: http://www.objectaid.com/update 입력 후 Ok 클릭
그리고 설치 ㄱㄱㄱㄱㄱㄱ
위 설치 주소와 JUNO 버전 메모는 작성 당시의 환경을 기록한 것이다. 플러그인 저장소의 현재 운영 여부나 최신 Eclipse와의 호환성은 이 글에서 확인하지 않았다. 설치 전에는 사용하는 Eclipse 버전과 플러그인 배포 페이지의 호환성·배포 주체를 확인한다.
| 목적 | 확인할 점 |
|---|---|
.class 내용을 읽기 | 디컴파일된 소스는 원본 주석·변수명과 다를 수 있다. 라이브러리의 소스 JAR가 있다면 먼저 연결한다. |
| 클래스 관계 보기 | UML 그림이 보여 주는 참조와 실제 런타임 의존성이 같은지 코드를 확인한다. |
설치 순서는 Help → Install New Software → 저장소 추가 → 설치 항목 선택 → 재시작이다. 설치 중에는 임의의 플러그인 사이트를 신뢰 목록에 무조건 추가하지 않는다. 예전 프로젝트를 재현하는 목적이라면 사용했던 IDE와 JDK 버전을 함께 기록해 두는 편이 오류를 좁히기 쉽다.
.class를 읽기 전에 소스 JAR부터 찾기
Java 라이브러리의 구현을 확인하려는 목적이라면 디컴파일 플러그인을 먼저 설치하지 않아도 된다. 라이브러리 배포자가 -sources.jar를 제공하는지 확인하고 Eclipse에서 해당 JAR에 소스를 연결한다. Package Explorer에서 라이브러리 JAR를 선택해 Properties → Java Source Attachment에서 소스 아카이브를 지정할 수 있다. 빌드 도구가 소스 다운로드를 지원한다면 프로젝트 의존성을 통해 연결하는 것도 방법이다. 소스가 연결되면 클래스 탐색과 디버거에서 원래 소스의 줄을 볼 수 있다.
flowchart LR
C[.class 내용을 확인하고 싶음] --> S{공식 소스 JAR가 있나?}
S -->|있음| A[Source Attachment 설정]
S -->|없음| D[디컴파일러 호환성·출처 확인]
A --> V[클래스 열기·디버그 줄 확인]
D --> V
디컴파일 결과는 원본의 주석·변수명·제네릭 메타데이터·최적화 전 제어 흐름을 그대로 재현하지 못할 수 있다. 컴파일러가 생성한 코드나 난독화된 라이브러리는 특히 읽기 어렵다. 디컴파일된 텍스트를 공식 소스와 동일한 사실로 취급하지 않고, 런타임 동작이 중요하면 작은 재현 테스트나 디버깅으로 검증한다. 라이브러리의 사용·분석이 허용되는 라이선스 조건도 확인한다.
플러그인 설치가 실패할 때
Eclipse 플러그인은 단일 JAR 파일만이 아니라 다른 플러그인·Eclipse 플랫폼 버전에 의존할 수 있다. Help → Install New Software에서 update site를 추가했는데 항목이 비어 있거나 설치가 막히면 아래 순서로 확인한다.
| 증상 | 점검 |
|---|---|
| 저장소를 읽지 못함 | URL의 현재 운영 여부, HTTPS/TLS, 프록시 설정 |
| 설치 후보가 없음 | 사용 중인 Eclipse 릴리스와 플러그인 지원 범위 |
| 의존성 충돌 | 설치 상세 창에서 요구하는 feature/Java 버전 |
| 설치 후 메뉴가 없음 | Eclipse 재시작, Installation Details에서 설치 결과 확인 |
원문의 JD-Eclipse·ObjectAid 주소는 2016년에 쓰던 update site다. 지금도 운영 중인지 확인하지 않았으므로 무심코 설치 경로로 사용하지 않는다. 새 Eclipse에 설치할 때는 배포자의 현재 페이지에서 update site와 지원 릴리스를 확인하고, 설치 창의 공급자·서명·권한을 검토한다. 플러그인 설치가 성공해도 여러 프로젝트의 클래스 경로와 JDK가 서로 다르면 디컴파일러 또는 UML 그림이 다르게 동작할 수 있다.
ObjectAid 같은 UML 도구는 정적 코드 관계를 시각화하는 데 쓸 수 있다. 예를 들어 클래스 A의 필드가 인터페이스 B를 참조하면 그림에 의존 관계가 나타날 수 있지만, 런타임에 어떤 B 구현체가 주입되는지까지 그림 하나로 단정하기 어렵다. 클래스 관계를 조사할 때에는 IDE의 Type Hierarchy와 Call Hierarchy, 실제 DI 설정을 함께 본다.