코린이의 소소한 공부노트

패키지와 클래스 경로 본문

Java

패키지와 클래스 경로

무지맘 2022. 4. 13. 19:36

자바에서 말하는 패키지

1. 서로 관련된 클래스의 묶음을 나타낸다.

2. 이클립스 화면에서 Package Explorer를 보면 클래스는 클래스 파일(이름.class), 패키지는 클래스 파일을 담고 있는 폴더, 하위 패키지는 하위 폴더로 되어 있다. 이 말인즉슨 패키지 안에 패키지를 넣을 수 있다는 뜻이다.

3. 클래스의 실제 이름(full name)은 패키지를 포함한다. 우리가 알고 있는 문자열 String클래스의 풀 네임은 java.lang.String이다. java 패키지 안에 있는 lang 패키지에 String 클래스가 있다는 뜻이다.

 

패키지가 무엇인지는 알았으니, 한번 만들어보자.

필자가 공부할 때나 포스팅하기 전 코드를 돌려볼 때 practice라는 자바 프로젝트를 이용한다. 여기에 testpackage라는 이름의 패키지를 하나 만들어보려 한다. 이클립스에서는 패키지를 만드는 버튼이 따로 있지만, 난 패키지 선언이 해보고 싶으니 PackagePractice 클래스를 하나 만들어서 이것을 이용해 패키지를 만들어보도록 하겠다.

#1. 디폴트 패키지 안에 PackagePractice.java파일을 하나 생성했다. 잘 있는 것을 확인할 수 있다.

#2. 파일 첫 줄에 package testpackage; 라고 작성해 패키지를 선언했다. 그랬더니 에러가 발생했다. 에러 메시지의 내용은 "testpackge"라고 선언된 패키지는 "" 패키지와 맞지 않다는 것이다. 그러면서 2가지 해결책을 제시한다.

  - 'PackagePractice.java' 파일을 'testpackage' 패키지로 옮기기

  - 패키지 선언을 삭제하기

그래서 난 첫 번째를 선택했다.

#3. 이클립스가 알아서 패키지를 만들어 옮겨줬다.

 

패키지를 선언할 때 알아야 할 사항은 다음과 같다.

1. 패키지를 만들 때는 소스파일의 첫 번째 문장에 1번만 선언하면 된다.

// PackagePractice.java
package testpackage; // 패키지 선언 문장

public class PackagePractice {
    // 코드코드...
}

 2. 같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 된다.

// PackagePractice.java
package testpackage;

public class PackagePractice { }

class PackagePractice2 { } // 이것도 testpackage에 포함됨

3. 패키지 선언이 없으면 이름 없는 패키지(default package)에 속하게 된다.

  - 패키지 선언이 없는 Javap.java 파일은 디폴트 패키지에 있다.

4. 패키지의 하위 패키지를 만들고 싶다면 선언할 때 마침표를 이용하면 된다.

5. 커맨드에서 클래스 파일을 실행시키려면 해당 프로젝트의 bin 폴더까지 이동한 후 패키지 이름까지 다 적어야 한다. 필자는 이런 식으로 접근해야 실행시킬 수 있었다.

C:\eclipse-workspace\practice\bin>java testpackage.lowerpackage.LowerPackage

그런데, 터미널에서 매번 이런 식으로 접근하려면 너무 귀찮다. 이름도 길고 경로도 길고 외우기 힘들다. 그래서 사용하는 것이 클래스 경로다.

 

[클래스 패스(경로)]

1. 클래스 파일의 위치를 알려주는 경로로,

2. 환경변수 classpath로 관리하며, 경로 간의 구분자는 세미콜론 ; 을 사용한다.

  - 여러 클래스 패스를 사용하고 싶으면 경로1;경로2;경로3;... 등 추가해서 써주면 된다.

  - 경로1에 갔는데 해당 파일이 없으면 경로2, 경로2에 갔는데 해당 파일이 없으면 경로3으로 이동한다.

  - 그러므로 우리는 너무 길어지는 것을 신경 쓰지 말고 세미콜론을 이용해 경로를 쭉 추가해주면 된다.

3. classpath에 패키지의 루트를 등록해주면 자바 클래스 파일을 편하게 실행시킬 수 있다.

 

환경변수를 설정하는 방법

#1. 제어판에서 환경변수라고 검색한 후 시스템 환경변수 편집을 클릭

#2. 고급 탭의 환경변수 클릭

#3. 시스템 변수의 새로 만들기 버튼 클릭

#4. 변수 이름에 classpath를, 변숫값에 해당 패키지의 루트가 되는 bin폴더까지의 경로를 입력 후 확인

#5. 쭉 확인을 눌러 열었던 모든 창을 다 닫기

환경변수 값이 바뀌면 커맨드 창을 닫았다 새로 열어야 한다. 이것까지 설정했다면 커맨드 창에서 패키지 루트로 이동하지 않고 어느곳에서나 java testpackage.lowerpackage.LowerPackage를 입력하면 실행된다.

 

[쿠키글] classpath 커맨드 창에서 확인해보기

set classpath라고 입력하면 현재 저장되어 있는 classpath를 볼 수 있다.

여기서 경로를 변경하고 싶다면 대입 연산자 =을 이용하면 된다.

이런 식으로 입력하면 = 오른쪽의 경로가 저장이 되고, 다시 set classpath를 쳐보면 변경된 것이 저장되어있는 것을 확인할 수 있다.

'Java' 카테고리의 다른 글

제어자  (0) 2022.04.16
임포트와 스태틱 임포트  (0) 2022.04.14
생성자 super() vs 참조변수 super  (0) 2022.03.23
메서드 오버라이딩 (+오버로딩과의 차이점)  (0) 2022.03.22
클래스 간의 관계 - 상속, 포함  (0) 2022.03.15