열혈 Java 6 - 클래스 패스, 패키지

whipbaek·2021년 11월 13일
0

열혈Java

목록 보기
6/18

  • 현재 디렉토리 : 실행중인 프로그램의 작업 디렉토리 (콘솔창에서 가리키고 있는 위치)

    • java파일을 컴파일 하기위해서 명령 프롬포트창에서 '파일명 javac' 를 실행할시 jvm 은 현재 디렉토리를 기반으로 자바 파일을 찾고 컴파일을 진행한다.

    • 이때 위 사진을 기반으로 AAA, ZZZ, WhatYourName 3개의 클래스 파일이 디렉토리에 생성된다.

    • 이후 main method를 지니고 있는 WhatYourName을 실행시키면 main이 실행되고 그 내부에서 AAA와 ZZZ 클래스를 호출하고 있기에 현재 디렉토리에서 AAA 파일과 ZZZ파일을 찾고 실행을 진행할 것이다.

  • 문제가 생기는 경우

    • main이 포함된 클래스는 현재 디렉토리에 존재하나, 그 구성 메서드는 다른 디렉토리에 존재함!

      -> main은 실행되나 메서드를 찾는과정에서 문제가 생긴다.

    • 이 때 '클래스패스'에 새로운 디렉토리를 추가하면 문제가 없어짐(경로를 추가함)

  • 클래스 패스 : 자바 가상머신의 클래스 탐색 경로

    • 클래스 패스를 추가할때는 현재 실행 콘솔창에서만 유효함!

    • . 은 현재 디렉토리를 의미함 -> 클래스 패스란걸 지정해주면 jvm은 더이상 현재 디렉토리에서 클래스 파일을 찾는걸 디폴트로 하지 않기때문에 명시적으로 추가해주는 것.
      (여전히 여기서 파일을 찾겠다.)

  • 절대 경로 vs 상대 경로

    • . 이 가리키는 경로가 상대적으로 바뀜! 명령 프롬포트가 가르키는 위치로

  • 클래스패스를 고정시키는 방법! 이 있으나 추천하지 않음.

출처 : 윤성우의 열혈Java 프로그래밍

profile
코딩 및 CS에 관하여 공부합니다.

0개의 댓글

관련 채용 정보