이클립스에서 소스코드를 보다가 클래스나 메소드의 원본이 어떻게 정의되어 있는지 보고 싶을 때가 있다.


그럴 땐 컨트롤+마우스클릭 또는 마우스를 찾고자 하는 대상의 위에 대고 F3키를 누르면 원본으로 찾아갈 수가 있다.


그런데, 분명 위 방법대로 찾아갔는데 외부에서 가져온 파일의 경우 원본 소스를 볼 수 없을 때가 있다.

Source not found..라는 메시지가 나오면서

Attach Source라는 버튼이 보인다.

(원리를 모르면...분명 난 빌드패스를 제대로 잡아줬는데, 소스코드가 왜 안보이지?라고 당황할 수밖에 없다)


초보땐 왜안되지? 했었는데, 제대로 알려주는 곳이 별로 없더라..

저건 클래스파일(.class)은 빌드패스로 가져왔지만, 소스파일(.java)은 가져오지 않았기 때문이다.


그럼 두가지의 차이를 보자.

1. 먼저 jar파일(class파일을 묶어서 압축해서 제공하는 것)

API를 제공하는 측에서는 바이너리 파일인 class파일을 제공한다. 제공할 때는 여러 개의 class파일을 묶어서 jar파일로 압축한 형태로 제공한다.

그래서 우리는 저 jar파일을 빌드패스로 읽어들여서 사용할 수 있는 것이다.


2. java파일

이 파일이 사람이 읽을 수 있는 소스코드가 쓰인 파일이다.

보통은 src.zip이라든가 어쩌고_저쩌고_src.zip과 같은 형태로 java파일이 압축되어 제공된다.

저 압축파일을 이클립스에서 Attach Source버튼을 누른 다음 추가하면 되는 것이다.



정리하면...

자바파일(사람이 읽을 수 있는 파일)과 클래스파일(바이너리파일)이 있는데, 이클립스에서 프로그래밍에 사용하는 것은 클래스파일(class파일 여러개가 압축되어 jar형태로 제공)이다.

그리고 소스코드를 사람이 추적하면서 보려면 자바파일(src.zip과 같은 것)을 source attach에 추가해야 한다는 것.