반응형
1. 개요
본 문서는 IBM 이클립스의 기본적인 사용법을 설명한 것으로, 따라하기 식으로 서술되어 있다. 이클립스 홈페이지(www.eclipse.org)의 FAQ와 이클립스 도움말을 참조하였다.
2. 화면 구성
이클립스에는 작업의 성격에 따라 여러 perspective가 존재한다. 이클립스를 실행시켜보면 화면 왼쪽에 다음과 같은 버튼들이 보인다.
은 자바 perspective로서 자바 패키지를 기준으로 자바 파일들이 보여진다.
은 리소스 perspective로서 디렉토리와 파일명을 기준으로 자바 파일들이 분류된다.
은 자바 브라우징 perspective로서 자바 퍼스펙티브처럼 자바 패키지를 기준으로 분류가 이루어지지만, 그러한 분류가 이루어지는 모양새가 다음과 같다.
은 CVS 저장소 perspective인데, CVS에 대해 잘 모르는 관계로 설명을 하지 않겠다.
은 디버그 perspective로서 디버깅을 할 때, 유용한 정보들이 보여지는 화면이다.
지금까지 약 15일 정도 사용해 본 결과로는 자바 perspective가 가장 사용빈도가 높았으며, 앞으로 대부분의 설명 화면은 자바 perspective에서 이루어질 것이다.
3.새로운 프로젝트 만들기
이클립스에서는 어떤 작업을 하든지 ‘프로젝트’가 먼저 만들어져야 한다. 프로젝트를 만들기 위해서는 File 메뉴 -> New -> Project를 선택하든가, 아래 왼쪽 그림처럼 도구모음에서 New -> Project를 선택할 수 있다. Project를 선택하면, 아래 오른쪽 그림과 같은 화면이 보이는데, 왼쪽 패널에서 [Java], 오른쪽 패널에서 [Java Project]를 선택하고, [Next]버튼을 누른다.
|
|
이제 프로젝트의 이름을 지어주어야 한다.
왼쪽 그림처럼 프로젝트 이름을 입력해주면 된다. 그리고라는 체크 박스가 보이는데, 이것을 체크하면 이클립스 프로젝트 기본 경로인 <이클립스설치경로/workspace/>에 프로젝트 이름에 해당하는 디렉토리가 생성된다.
물론 이 체크 박스를 언체크하여 이미 존재하는 다른 클래스 패키지들을 연결시킬 수도 있다. 이에 대한 내용은 다음에 다시 언급될 것이다. 지금은 그냥 기본값으로 시작하도록 한다.
[Next]버튼을 누르면 자바 빌드에 관련된 설정을 해주는 대화상자가 뜬다. |
다른 것들은 별로 손댈 것이 없으나 [Libraries]탭은 내용 추가가 필요할 수도 있다.
우리는 현재 서블릿 스터디를 하고 있기 때문에 기본 자바 런타임 패키지인 rt.jar외에도 서블릿 패키지인 servlet.jar와 제이슨헌터 아저씨가 작성한 cos.jar가 필요하다. 추가하고 싶으면 [Add External JARs...]버튼을 선택해서 추가하면 된다. 이렇게 외부 라이브러리를 추가해주어야 이클립스에서 컴파일할 때 에러가 발생하지 않으며, 코딩시 서블릿 클래스에 대한 코드 어시스트(code assist)도 가능해진다.
하지만, 이렇게 외부 JAR 파일을 추가하는 것은 추후에도 가능하므로 지금은 그냥 [Finish] 버튼을 눌러서 프로젝트 생성을 완료하도록 한다. (프로젝트 선택 -> File 메뉴 -> Properties -> Java Build Path 를 선택하면 위와 똑같은 탭들을 볼 수 있다.)
4.새로운 클래스 추가하기
좀전에 생성한 프로젝트에 새로운 클래스를 추가해보도록 하겠다. 자바 perspective의 왼쪽 패키지 트리(이 패널을 ‘Packages 뷰’라고 한다)에서 TestProject를 선택한다. 그 상태에서 마우스 오른쪽 버튼을 클릭하여 뜬 팝업 메뉴에서 New->Class를 선택한다.
이렇게 새로운 클래스를 생성한다고 선택하면 다음 그림과 같이 새로운 자바 클래스를 만들어내는데 필요한 옵션을 설정해야 한다.
현재, 별도의 패키지 구조를 만들지는 않을 것이기 때문에 [Package]는 빈 상태(디폴트 패키지)로 둔다.
[Name]에는 클래스의 이름을 입력해야 한다. 다른 체크 박스는 손댈 것이 없어 보인다.
마지막에 보이는 세가지 체크 박스에 대해 설명하자면,
첫번째 것은 main 메소드를 자동으로 추가해 줄 것인가?,
두번째 것은 생성자 코드에 상위 클래스의 생성자를 호출하는 super() 메소드를 추가할 것인가?,
세번째 것은 상위 클래스가 추상 클래스로 지정되어 있을 때, 추상 메소드를 상속받아서 빈 메소드로 보여줄 것인가를 결정한다.
[Finish]버튼을 누르면 새로운 클래스가 생성될 것이다.
다음 그림과 같이 HelloWorld.java가 생성되어야 하며, main 메소드도 자동으로 추가되어 있는 것을 볼 수 있을 것이다.
5. 소스 입력하기
이제 자바 소스를 컴파일하고 실행시켜볼 예정이기 때문에, 다음과 같은 간단한 소스 파일을 입력해 보도록 하자. 소스는 역시나 ‘헬로우’다.
이클립스에는 재미있게도, 컴파일 과정이 별도의 메뉴로 제공되지 않는다. 단지 소스 입력을 마치고 저장(Ctrl+s)을 하면 자동으로 컴파일이 이루어진다. 그리고 코딩 중에 실시간으로 문법 검사를 해주기 때문에 오타에 의한 에러가 확실히 줄어든다. 만약 코딩을 했는데, 각 줄의 앞 부분에 전구 마크나 빨간 X 마크가 보이면, 뭔가 잘못되었음을 의미한다.
예를 들어, sayHello() 메소드에 리턴형인 void를 빼먹었다고 하자. 그러면 이클립스는 즉각적으로 다음과 같이 sayHello 메소드 앞에 전구 마크를 보여준다. 도대체 무슨 문제인가 궁금하면 그 전구 마크를 살짝 클릭해 보자. 다음 그림과 같은 화면이 보일 것이다.
이 외에도 클래스명 오타나 public, static 등과 관련된 문법 사항, import가 빠진 경우 등 거의 완벽한 수준의 실시간 검사를 제공하고 있다. 참고로, 가끔씩 노란 전구 마크가 들어와서 분명히 수정했는데도 불구하고 노란 전구 마크가 빨간 X 마크로 변해, 순간 당혹스럽게 만들기도 한다. 이 때는 살짝 Ctrl+s를 눌러서 저장을 한번 해주면 컴파일을 하면서 아무 문제 없음을 이클립스에서 알게 될 것이다.
6. 실행하기
앞에서 이미 컴파일이란 별도의 명시적인 단계는 없음을 알았다. 코딩을 완료했고, 화면에 아무런 에러가 보이지 않는다면 이제 위의 클래스를 실행시켜볼 수 있다.
메뉴에서 [Run]->[Run...] 을 선택하거나, 도구모음의 [달리기하고 있는 사람]버튼에서 아래 화살표를 클릭한 후, [Run...]을 선택해보자.
다음과 같은 화면이 뜰 것이다.
위의 그림에서 [Java Application]을 선택하고, 아래 있는 [New]버튼을 클릭하거나,
또는 [Java Application]을 더블 클릭하면, 다음과 같은 화면이 보일 것이다.
현재 작업 중이던 프로젝트가 TestProject이고 메인 클래스가 HelloWorld였다는 사실을 이클립스에서 알고 있기 때문에 스스로 적당한 값들을 채워넣었다. 오른쪽에 여러 탭이 보이는데, 지금은 건드리지 않고 그냥 [Run] 버튼을 눌러보자.
화면 하단이나 어딘가에 [Console 뷰]가 보일 것이고, 결과는 위와 같이 “Hello? Kim”이 될 것이다.
7. 디버깅하기
일반적으로 디버깅은 어느 순간 어떤 메소드에 전달된 파라미터의 값이 무엇인지 알고 싶을 때, 제어문이 도대체 어떤 순서로 수행되는지 알고 싶을때, 혹은 어떠한 논리적인 오류는 없는지 확인하기 위해 사용한다.
디버깅을 하기 위해서는 컴파일 에러가 발생한 지점 근처나 에러의 근원지라고 의심이 되는 부분에 미리 표시를 해두어야 한다. 디버깅 실행을 하면 이클립스는 이런 표시가 있는 부분에서 잠시 정지하여 프로그래머가 각종 변수의 현재 상태를 파악할 수 있도록 해준다.
위에서 작성했던 예제로 디버깅을 해보도록 하겠다.
디버깅 과정을 통해 우리는 sayHello에서 인사말 출력을 위해 사용하는 m_to라는 변수에 “Kim”이란 올바른 값이 저장되어 있는지 확인하고자 한다.
먼저 26라인에서 줄번호가 보이는 공간에서 오른쪽 마우스 버튼을 클릭하면 다음과 같은 팝업 메뉴가 보일 것이다. 여기서 [Add Breakpoint]를 선택하도록 한다. 선택하고 나면 하늘색 마크가 보일 것이다.
도구모음에서 을 선택하면 자바 perspective에서 자동으로 디버그 perspective로 변경되고, 좀전에 표시한 지점까지 실행이 되며 breakpoint 지점에서 대기하고 있음을 알 수 있을 것이다. 다음 그림에서 보는 바와 같이 우측 상단의 [variables 뷰]를 통해 현재 m_to 변수가 String 타입이며 그 값은 “Kim”이란 사실을 알 수 있다.
더 이상의 자세한 디버깅 요령에 대해서 아직은 나도 잘 모르기 때문에 여기까지만 설명하고 차후에 더 자세한 내용을 익히게 되면 다시 설명할 기회가 있겠지? ^^
8. 프로젝트에 기존의 클래스를 추가하기
항상 클래스를 새로 만드는 것은 아니며 기존의 클래스 파일을 그대로 가져다가 쓰거나, 혹은 어떤 클래스 파일을 테스트해 보기 위해 프로젝트에 포함시킬 수도 있다. 본 예제에서는 “퍼포먼스 튜닝”의 예제 파일 중 일부를 TestProject에 추가해 보도록 하겠다. 이 예제 파일은 “F:\STUDY\eclipse_test”에 저장되어 있다고 가정하며, 디렉토리 구조는 다음과 같다.
참고로 이 클래스(PrintWrapper, Dict)는 각각 tuning.console, tuning.dict로 패키지화 되어있다.
이 두 클래스를 TestProject에 추가하도록 하겠다. 먼저 [package 뷰]에서 TestProject를 선택하고 오른쪽 마우스 버튼을 클릭하여 [Import] 메뉴를 선택한다. 그러면 아래의 왼쪽 그림과 같은 대화상자가 뜨는데, 여기서 [File System]을 선택하면, 오른쪽과 같은 대화상자가 뜬다.
이 상태에서 [Directory]의 [Browse...]버튼을 눌러서 “F:\STUDY\eclipse_test”를 선택한 후, 모든 클래스 파일을 체크하도록 한다. 다음 그림을 참고한다.
위의 두 클래스 파일이 포함된 결과 화면은 다음과 같다.
그런데, 위와 같이 임포트를 한 결과를 잘 살펴보면 “F:\STUDY\eclipse_test”에 있던 클래스 파일들이 “<이클립스설치홈>/workspace/TestProject” 아래에 그대로 복사된 것을 알 수 있을 것이다. 이런 식으로 복사해오는 것이 기본 설정이기 때문에 이렇게 작동을 하는 것인데, 만약에 규모가 꽤 큰 패키지를 임포트하는 경우라면 공간의 낭비가 아닐 수 없을 것이다.
이런 문제를 해결하기 위해 실제로 클래스 파일을 “이클립스 워크스페이스”로 복사하지 않고, 원본은 원래 위치에 그대로 두고 단지 경로 정보만 참조해서 프로젝트를 만들 수도 있다. tuning.XXX 패키지를 임포트하기 위해 TuningTest라는 프로젝트를 새로 만들어보자. 처음에 프로젝트를 생성했던 방법대로 하면 되지만, 한가지 다른 점은 다음처럼 프로젝트 경로명에서 [Use Default]를 언체크하고 임포트하려는 실제 경로를 선택해야 한다.
위와 같이 제대로 선택을 한 후, 더 이상 [Next]할 필요없이 [Finish]버튼만 누르면 프로젝트 생성이 완료된다.
TuningTest 프로젝트에서 오른쪽 마우스 버튼을 눌러 [Properties]를 선택하면 다음과 같은 정보창이 보일 것이다.
[Location] 정보를 보면 이클립스 워크스페이스가 아닌 원래 tuning 패키지의 위치를 참조하고 있음을 알 수 있을 것이다.
NOTE!!
지금까지로는 한 프로젝트에 여러 경로의 클래스 파일을 참조할 수는 없는 것으로 보인다. 즉, 어떤 클래스는 이클립스 워크스페이스에 있는 것을 참조하고, 다른 클래스는 외부 경로만 참조해서 프로젝트에 추가하는 것은 안되는 것이다. 만약 나중에 되는 방법을 알게 되면 수정토록 하겠다. 그런데, 굳이 이렇게 안되도 별로 상관은 없을 것 같기는 하지만 ^^;;
9. ANT 사용하기
이제부터는 ANT를 사용하는 방법을 알아본다. 우선 ANT를 실행시키려면 build.xml 파일이 있어야 한다. 나같은 경우 ServletStudy라는 프로젝트를 생성한 후, 챕터별로 SourceFolder를 생성하고 각 소스 폴더별로 소스 파일을 관리했다. 그 모양새는 다음과 같다. 각 소스 폴더별로 build.xml과 web.xml 파일이 존재한다.
왼쪽 그림에서 보는 바와 같이, build.xml 파일에서 마우스 오른쪽 버튼을 클릭하면, [Run Ant...]라는 메뉴를 볼 수 있다. 단순히 이 메뉴를 선택하면 다음 그림과 같은 대화상자가 보인다.
여기서 build.xml의 여러 타겟(target) 엘리먼트들 중에서 특정 타겟을 선정해야 하고 [Finish]버튼을 누르면 ANT 실행이 이루어진다.
그러나 두가지 정도 주의할 점이 있다.
하나는 ANT를 실행시키면 다음과 같은 에러 메시지가 뜰 수 있다.
이 에러 메시지를 살펴보면, 컴파일러를 찾을 수 없으니 JAVA_HOME 환경변수 설정을 제대로 했는지 확인하라고 한다. 그러나 실상 이 문제를 해결하려면 다른 방법으로 해야한다. 백날 시스템의 JAVA_HOME을 수정해밨자 아무 상관이 없다.
우선 메인 메뉴인 Windows -> Preferences -> External Tools -> Ant를 선택하면 다음과 같은 대화상자가 보일 것이다.
위의 문제를 해결하려면 [Classpath]탭에 J2SDK의 tools.jar 파일이 포함되어 있어야 한다. 네모 안에 있는 항목을 [Add Jar...]버튼을 눌러서 추가하도록 한다.
그리고 나서 다시 [Run Ant...]메뉴를 실행시켜 보자. 잘 될 수도 있고, 아닐 수도 있는데, 아마도 제대로 안된 경우라면 컴파일 에러가 발생할 것이다. 아마도 servlet과 COS에 관련된 클래스들을 찾을 수 없다는 메시지들일 것이다.
아직 정확한 이유는 모르겠지만 ANT를 이용해서 컴파일을 할 경우, 시스템 전역에 걸려있는 클래스패스는 별 의미가 없는 것으로 보인다. build.xml 파일 내에 컴파일 시에 정확한 클래스패스가 모두 명시되어 있어야 한다. 다음과 같이.
<property name="cp" value=".;D:/jakarta-tomcat-4.0.4/common/lib/servlet.jar;D:/jakarta-tomcat-4.0.4/common/lib/cos.jar"/>
<target name="compile" depends="init">
<mkdir dir="${build}"/>
<javac srcdir="${src}" destdir="${build}" classpath="${cp}"/>
</target>
10. JavaDoc 생성하기
자바 헬프 문서를 생성하는 것은 더욱 간단하다. 디렉토리나 프로젝트 혹은 클래스 파일에서 오른쪽 마우스 버튼을 클릭하여 [Export] 메뉴를 선택한다.
왼쪽 그림과 같은 대화상자가 보이면, [javadoc]을 선택하고 [Next>]버튼을 클릭한다.
왼쪽 그림처럼 자바 헬프 문서로 만들고 싶은 자바 소스 파일을 선택하고, 자바 문서를 생성할 디렉토리 경로도 지정한다.
그냥 [Finish]만 눌러줘도 충분하다.
다른 옵션들을 더 보고 싶으면 계속 [Next]버튼을 눌러서 확인해 보도록.
이로써 자바 문서 생성도 완료되었다. ^^...
이렇게 자바 헬프 문서로 export하는 것 외에, JAR 파일로 export할 수도 있다. 방법은 간단하므로 설명을 생략한다.
한가지 언급하고자 하는 기능 중에 “삭제 파일 되돌리기” 기능이 있다. 이클립스 상에서 실수로 파일을 지운 경우 윈도우즈 휴지통에는 흔적이 남지 않기 때문에 정상적인 방법으로는 복구가 불가능하다. 게다가 이클립스는 파일을 지울 때, 별달리 경고도 없이 보통은 그냥 지우는 경향이 강하다. 하지만 이런 위험천만한 스타일이 가능한 이유가 있었다. 처음에는 몰라서 잘못 지운 파일을 다시 코딩하는 우를 범했는데, 알고 보니 이클립스 자체적으로 이러한 파일들에 대한 히스토리를 관리하고 있었다. 즉, 자체적으로 휴지통 기능 혹은 되돌리기 기능이 있는 셈이었다.
[package 뷰]에서 디렉토리나 패키지, 혹은 파일을 선택한 후에, 오른쪽 버튼 클릭으로 팝업 메뉴를 띄워보면 [Restore from Local History]라는 메뉴가 있다. 이 기능을 선택하면 처음부터 지금까지 지워졌던 기억이 있는 모든 기록들이 시간별로 쫘악 정리되어 있는 것을 볼 수 있다. 그 중에서 어느 것이 내가 원하는 시점의 파일인지 파악한 후, 복구하고자 하는 적당한 파일들을 체크하고 [Restore] 버튼을 클릭하면 된다. 이 기능이 없다면 정말 피말리는 사건들이 자주 생길 것이다. ^^ 다음의 화면은 참조하기 바란다.
11.기타 유용한 기능들
1. Organize Import / Add Imports
보통 import java.io.*; 이런식으로 임포트를 하게 되는데, 코딩을 다 끝낸 후에 Organize import 기능을 사용하면 소스 상에서 실제로 사용한 클래스들만을 임포하도록 import 문장을 수정해 준다. 예를 들어,
2. Code Formatter
코딩 스타일을 상세하게 지정할 수 있어서 자신의 코딩 스타일을 그대로 사용할 수 있고, 소스 Formatter 기능이 있어 뒤죽박죽되어 있는 소스를 자신이 익숙한 스타일로 한꺼번에 변경할 수 있다.
3. Refactor
클래스 이름을 수정하거나 패키지가 변경되면, 그 클래스를 참조하고 있던 다른 모든 클래스까지도 자동으로 수정을 해서 소스 관리가 자동으로 이루어진다.
4. 코딩 중 실시간 문법 검사 및 해결책 제시
코딩 중에 실시간 문법 검사를 하며, 문제가 발생하면 가능한 해결책을 여러 가지 제시한다. 여러 가지 해결책을 직접 입력할 필요도 없으며 단지 그 해결책이 나열된 팝업 메뉴 중에서 한 가지를 선택하면 스스로 수정해준다.
5. 코드 어시스트
다른 툴에도 존재하는 기능이며, MS의 비쥬얼 스튜디오보다는 약간 사용하기 불편하지만 그래도 꼭 필요한 기능이며, 코딩 속도를 높여주고, API 문법을 빠삭하게 외우지 않아도 코딩이 가능하도록 해준다. 기본적으로 .(점)을 누르고 500 밀리초 후에 어시스트 팝업이 뜨도록 되어있는데, 이는 너무 느린것 같고 개인적으로는 100 밀리초로 설정하여 사용하고 있다.
출처: - IBM 의 이클립스 사용법 - 자바카페 김정환님(http://www.javacafe.or.kr)