본문 바로가기
back-end/JAVA

26) 패키지(package), 클래스패스(classpath)

by 모두의 향연 2021. 6. 6.
728x90
반응형

26) 패키지(package), 클래스패스(classpath)

 

1. 패키지(package)

-서로 관련된 클래스의 묶음(Java8 기준으로 약4000개의 클래스가 있음. 많아서 묶어줘야 됨)

-클래스는 클래스 파일(. class), 패키지는 폴더, 하위 패키지는 하위 폴더

패키지 클래스 개념

-클래스의 실제 이름(full name)은 패키지를 포함(이제까지 쓴 String의 실제 이름: java.lang.String)

rt.java.lang.String

*rt.jar는 실행환경에 필요한 클래스들을 압축한 파일(JDK설치경로\jre\lib에 위치)

*Java9부터 rt.jar는 module개념이 들어가면서 없어짐

*jar파일은 exe를 통해 압축을 풀 수 있음(jar.exe), jar=zip과 같음

 

 

2. 패키지의 선언

-패키지는 소스파일의 첫 번째 문장으로 단 한 번 선언

패키지는 첫 번째 문장에 선언됨

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

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

 

 

3. 클래스 경로 보는 법

-소스파일 이름 우클릭-show in-system explorer(탐색기)

소스파일이름 우클릭-show in-system exolorer(탐색기)
폴더구성

bin폴더: 컴파일된 클래스 파일(*. class)이 있는 곳

src폴더: 소스 파일(*. java)이 있는 곳

이걸 이클립스가 자동으로 실행해주는데, 이클립스 도움 없이도 할 줄 알아야 합니다.

그래서 패키지 클래스 파일을 이클립스 도움 없이 실행하는 방법을 해보겠습니다.

 

 

4. 클래스패스 직접 실행방법

커맨드창 열기
1

'java com.codechobo.book.PackageTest'를 친다.

그럼 '로드할 수 없다'라고 나오는데, 이유가 그 많은 컴퓨터 파일 중에서 찾기 어렵기 때문이다.

그래서 어느 정도 위치를 가깝게 잡아줘야 한다.

2

com패키지 전인 bin까지 이동한다. 그리고 주소를 복사한다.

C:\java\workspace\ch07\bin

3

'cd C:\java\workspace\ch07\bin'를 입력한다.

4

다시 'java com.codechobo.book.PackageTest'를 치면 클래스에 있는 내용이 출력된다.

 

 

 

5. 클래스패스(classpath)

-클래스 파일(*. class)의 위치를 알려주는 경로(path)

-환경변수 classpath로 관리하며, 경로 간의 구분자는 ';'를 사용

-classpath(환경변수)에 패키지의 루트를 등록해줘야 함

 

매번 특정 폴더로 이동하고 클래스를 찾는 것은 번거롭다.

이 경로를 클래스패스에 저장해놓으면 불편하게 이동하지 않아도 된다.

 

 

 

6. 클래스패스 반자동(?) 실행방법

제어판-'환경변수'입력-시스템 환경변수 편집-고급 탭-'환경변수(N)'클릭-'시스템 변수'부분에 '새로 만들기'클릭-변수 이름엔 'classpath', 변숫값엔 지정된 경로를 적기-확인

환경변수 설정

다시 cmd창을 열고 'java com.codechobo.book.PackageTest'를 치면 이전처럼 패키지 루트를 쓰지 않아도 클래스 내용이 출력 가능하게 된다.

 

*추가로 cmd창에 'set 내가 지정한 path이름'을 치면 (ex: set classpath) 그 경로가 나온다. 

 

지금이야 이클립스가 자동으로 해주기 때문에 클래스의 경로를 바로 알려주는데, 직접 경로를 설정하는 연습을 해야 한다.

 

 

*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다*

728x90
반응형