---
title: "Java 정리 04"
date: "2018-11-16"
tags: ["Java"]
status: archived
verified: false
---

## Java 정리 04 - 이클립스

---

### 이클립스 설치

* **이클립스는 IDE (Integrated Development Environment, 통합 개발 환경)**
    * **코딩, 디버그, 컴파일, 배포 등을 한번에 할 수 있는 툴**
* EPL (Eclipse Public License) - 무료
    * Eclipse Foundation에서 관리
* Java로 만들어진 툴(Java SE가 설치되어 있어야 동작)
* 웹개발을 위해선 Java EE 버전 선택
    * 자바, 오라클, 이클립스 모두 설치 버전을 맞춰야 함(32/64bit)
* **Package 단위로 Source Code 관리**

![01](/md/legacy-assets/java/04/01.webp)

![02](/md/legacy-assets/java/04/02.webp)

---

### Package

* **비슷한 일을 하는 class들을 관리하기 위한 폴더**
    * 패키지가 다르면 같은 이름의 클래스를 만들 수 있다.
* **클래스명 위에 package 선언하여 사용**
* **package의 이름은 유일해야 함**
    * **역방향 도메인 사용**
        * 원래 역방향 도메인의 의미는 IP
        * 여기서 의미하는 역방향은 거꾸로 읽는 도메인
        * 예) sist.co.kr
        * 패키지명 : kr.co.sist.하는일

```java
// 1. 선언 : 클래스의 가장 처음 생성

package 패키지명;

class 클래스명 {
    ...
}

// 2. 저장
// 3. 컴파일 : 패키지 컴파일 
//            javac -d . 소스파일명.java
//              -d : 선언된 이름으로 폴더 생성
//               . : 그 안에
// 4. 실행 : 가장 외부 패키지가 보여지는 위치에서 실행
//           java 패키지명.bytecode명 
```

```java
// java 파일이 해당 경로에 있다면 C:\dev\Test.java 

package kr.co.sist;
class Test {
    ...
}

// 패키지 컴파일
C:\dev> javac -d . Test.java

// C:\dev\kr\co\sist\Test.class 생성

// 실행
C:\dev> java kr.co.sist.Test

// 자바는 실행할 때 확장자를 주지 않음
// '.' 입력 시 패키지로 인식
```

![03](/md/legacy-assets/java/04/03.webp)

![04](/md/legacy-assets/java/04/04.webp)

---

### 배치파일을 이용한 이클립스 실행

* 이동했을 때 간편한 개발환경 설정을 위해 배치파일 사용
    * 자바 설치 시 만들었던 env.bat 파일 수정
    * 우선 설치된 eclipse를 dev폴더에 복사
    * **eclipse path 추가**


```java
// env.bat 파일
rem path - 특정프로그램(javac.exe, java.exe)를 설치된 경로에 상관없이 사용하기위한 path
rem xxx_home - 프로그램끼리 경로를 참조하기 위해 설정하는 path

set dev_home=C:\Users\owner\youngRepositories\SSangYoung\dev
set java_home=%dev_home%\Java\jdk1.8.0_191
set eclipse_home=%dev_home%\eclipse

set path=%java_home%\bin;%eclipse_home%
```

```java
// eclipse.bat
rem path를 사용하기위해 path가 설정된 파일을 호출
call env.bat

rem 설정된 경로에서 필요한 실행파일을 실행
eclipse.exe
```

![05](/md/legacy-assets/java/04/05.webp)

* **cmd에서 eclipse.bat 실행 시 path 설정 후 이클립스가 실행됨**

---

### Perspective 변경

* Java EE 설치 시 Java EE용 Perspective 적용상태
* Open Perspective에서 Java SE로 변경이 가능하다
* 각 탭은 드래그앤드롭으로 위치변경이 자유로움
    * Reset을 사용하면 default perspective로 돌아갈 수 있음

![06](/md/legacy-assets/java/04/06.webp)

![07](/md/legacy-assets/java/04/07.webp) 

---

### 폰트변경

* Window - Preferences - General - Appearance - Colors And Fonts에서 변경가능
    * Basic 안에 Text Font를 바꿔야 다 바뀜

![17](/md/legacy-assets/java/04/17.webp)

---

### 이클립스 자주쓰는 단축키

* **Ctrl + M** - 전체화면 
* **Ctrl + D** - 한줄 지우기
* **Ctrl + Space** - 탬플릿 제안(자동완성)
* **Ctrl + S** - 해당 파일저장
* 실행
    * Run Configurations에서 해당 class 파일 선택하고 Run
    * Alt + Shift + X, J (Java Application 실행)
    * **Ctrl + F11** 
        * F11은 컴파일 안하고 기존 class파일을 가지고 실행
        * **자바는 저장하면 자동으로 컴파일**
* **Alt + 위/아래 화살표** - 커서 선택된 줄 이동
* **Ctrl + Alt + 위/아래 화살표** - 커서 선택된 줄 위/아래 복사
* **Ctrl + /** - 한줄 주석
* **Ctrl + Shift + /** - 여러줄 주석
* **Alt + Shift + J** - JavaDoc 주석
* **Ctrl + Shift + F** - 코드정렬
* **Ctrl + W** - 탭 닫기
* **Ctrl + Shift + W** - 모든 탭 닫기
* 링크타기
    * **Ctrl**을 누르고 다른 소스에서 생성된 변수 등을 클릭 시 해당 페이지로 이동
    * **Alt + 좌/우 화살표**로 링크 이동했던 걸 이동가능
* **F5** - 패키지 익스플로어 패키지 재로딩
* **F2** - 파일명 변경
    * 파일명만 바꾸면 코드내용도 자동으로 변경된
* **Ctrl + Z** - Undo
* **Ctrl + Y** - Redo
* **Ctrl + Shift + L** - 단축키 전체보기
* **Ctrl + Shift + O** - 자동 import
* **Ctrl + O** - Outline 보기

---

### 외부에서 소스 가져오기

* 외부 소스 파일들을 복사, 이클립스 패키지 익스플로어 src에 붙여넣기로 간단히 가져올 수 있다.
    * 붙여넣으면 패키지가 달라 에러 발생

![08](/md/legacy-assets/java/04/08.webp)

![09](/md/legacy-assets/java/04/09.webp)

* 패키지명 바꾸기
    * 소스코드가 적다면 일일히 패키지 선언을 추가
    * 양이 많다면 패키지 내 코드를 상위 src로 드래그앤드랍
        * 소스파일들이 default 패키지에 속하게 됨
        * 다시 원래 패키지로 이동시키면 해당 패키지 선언이 추가됨

![10](/md/legacy-assets/java/04/10.webp)

* 외부 소스 파일들을 workspace 디렉토리로 옮기면 패키지 익스플로어엔 결과가 바로 반영안됨
    * **이클립스는 실행 시 한번 패키지들을 로딩하고 추가 로딩을 안함**
        * **F5**로 리프레쉬하면 추가된 패키지 확인 가능

---

### 스플래시 이미지 변경

* 원하는 이미지 받기
* 그림판으로 변경하고픈 이미지를 '다른 이름으로 저장'으로 24비트 비트맵파일로 변경
    * splash로 파일명 변경
* 이클립스 폴더에서 splash 검색
    * splash 파일 선택 후 파일 위치 열기로 해당 경로에 들어가서 이미지 덮어씌움

![11](/md/legacy-assets/java/04/11.webp)

![12](/md/legacy-assets/java/04/12.webp)

![13](/md/legacy-assets/java/04/13.webp)

---

### 삭제한 패키지, 클래스파일 살리기 

* 보통 Undo로 가능
    * 삭제 후 이클립스를 종료하면 Undo가 안됨
* **이클립스에선 패키지, 클래스파일은 지워도 다시 살릴 수 있음**
    * 다만 프로젝트는 지우면 못 살린다
    * 패키지 익스플로어 프로젝트 선택, 우클릭
        * **Restore from Local History** 선택, 복원하고자 하는 파일 선택 후 복원

![14](/md/legacy-assets/java/04/14.webp)

---

### 가비지컬렉터 실행

* Window - Preferences - General에서 'Show heap status' 클릭
    * 이클립스 하단바에 heap 영역이 바로 표시됨
* 쓰레기통 모양 클릭하면 **가비지컬렉터 실행**
    * 이클립스가 느리고 불안정해지면 실행

![15](/md/legacy-assets/java/04/15.webp)

![16](/md/legacy-assets/java/04/16.webp)

---

### Indent Guide 플러그인 설치

* 기존 깃 유저의 플러그인 자료는 사라진 상태(404..)
    * 다른 유저의 깃 포크자료로 설치
    * Help - Install New Software 
    * http://kiritsuku.github.io/IndentGuide/update/ 를 Location으로 설정 후 설치
    * 설치 후 Prefrences에서 Indent Guide 적용
* **적용 후에도 선이 안나타날 경우**
    * [prefs 파일](/md/legacy-assets/java/04/jp.sourceforge.pdt_tools.indentGuide.prefs)을 \workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings 경로에 덮어씌움.

![18](/md/legacy-assets/java/04/18.webp)

---

### 이클립스에서 arguments 받기

* 단축키(Ctrl + F11)로 받으면 안됨
* **Run Configurations - Program Arguments에 값을 넣어주고 실행하면 된다**
    * 실행을 위해 JVM는 최소메모리 32MB의 메모리 필요
        * **VM arguments는 실행되는 자바의 메모리를 바꿔줄 수 있음**
    * **arguments를 넣은 후에는 Ctrl + F11로 실행이 가능해짐**

![19](/md/legacy-assets/java/04/19.webp)

---

### System.out.println() method

* 디버깅 목적으로 로그를 찍는데 사용되는 메소드

```java
i >>= 1; // 0001 0000 -> 0000 1000 = 8
i >>>= 2; // 0000 0100 -> 0000 0010 = 1
System.out.println(i); // 디버그 목적

// System.out.println()은 디버그 목적으로 개발 시 값 확인용으로 사용
// 실행중인 코드에 출력 코드가 존재하면 속도가 느려진다.
// 확인 후엔 꼭 지울 것 (남기면 취약점, Leftover Debug Code) -> 시큐어 코딩
```

### 디버그


* Debug Perspective에서 진행
* **breakpoint - 멈추는 점**
    * 토글방식으로 라인 수 앞에 더블클릭해서 생성
    * **해당 라인을 시작하기 전에 멈춤**
    * 이클립스 종료 시 사라짐, 기존 포인트 더블클릭하면 삭제
* 디버그 브레이크 포인트는 배포시 아무 문제를 발생시키지 않음
* **Debug 벌레버튼 누르면 디버그 시작**
* 기본 조작
    * 다음 브레이크 포인트로 이동 **Resume(F8)**
    * **중지(Terminate) Ctrl+F2**
    * **Step Into** - 메서드 존재할 경우 그 안에 들어가 진행 상황을 봄
    * **Step Over** : 다음 라인으로 이동

![20](/md/legacy-assets/java/04/20.webp)

![21](/md/legacy-assets/java/04/21.webp)
