기기

PATH, CLASSPATH, BUILDPATH에 대해 본문

Java

PATH, CLASSPATH, BUILDPATH에 대해

notEmpty 2021. 12. 29. 17:31

path란

  • 운영체제가 사용하는 환경변수 (environment variable)
  • 실행 가능한 파일 또는 자바 바이트 클래스 경로
  • 리눅스, 맥 등 터미널에서 set CLASS_PATH=... 로 설정 가능 
  • echo $'환경변수 이름' 으로 설정된 환경변수 값 확인 가능 
    • echo $CLASS_PATH 

 

classpath란

  • classpath 또한 환경변수로 java compiler가 사용
  • runtime시 compiler가 클래스파일을 찾는 경로 (정확히는 class loader)
  • JVM이 프로그램을 실행할 때 class를 찾기 위해 사용 
    • terminal에서 javac로 실행 시 디폴트는 현재 경로 참고
    • OS의 환경변수로 설정한 CLASS_PATH를 참고할 수 있다. (bash_profile, profile,,)
    • Spring에서 제공하는 ClassPathResource 는 classpath에 저장된 파일을 쉽게 가져올 수 있도록 지원

ClassPathResource 예시 

  • src/main/resources/data/data.txt 경로에 위치한 파일 가져오기 
  • 다음 코드가 정상으로 실행된다면 src/main/resources 까지가 ClassPath에 등록된 것이다. 
ClassPathResource resource = new ClassPathResource("data/data.txt");

 

추가로 classpath관련 자세한 내용 참고 링크

https://effectivesquid.tistory.com/entry/자바-클래스패스classpath란

https://vvshinevv.tistory.com/70

 

 

buildpath란

  • 빌드 시 사용되는 자원을 가져오는 경로
    • 빌드란? 실행 가능한 파일로 산출하는 것
    • 빌드 과정
      • compile
      • 소스코드 Test
      • Test 수행(unit test 등)
      • Packaging(jar파일, war파일 등)
      • Health check(PMD, test coverage 등)
      • report 생성
  • eclipse에서 등록 시 source, projects, library로 구분되어 있는 것을 확인할 수 있다. 
    • 프로젝트 첫 빌드 시 build path 를 참고하여 프로젝트 경로에 .classpath 파일을 만든다.

 

.classpath에서 확인한 resourec 경로

 

 

참고

https://stackoverflow.com/questions/2650168/building-vs-compiling-java

http://june0313.github.io/2018/08/11/read-resource-file-on-spring/

https://www.linkedin.com/pulse/difference-between-path-classpath-shivani-verma