1. 개요
클래스패스란 정확하게 뭔지 설명할 수도 없고, 이해도 가지 않았다.
스프링 프로젝트의 환경설정에서 클래스패스를 기준으로 경로가 지정되있는걸 많이 보았는데
정확하게 클래스패스란 어떤건지 내 기준으로 이해하기 위하여 이 글을 작성하게 되었다.
2. 클래스패스를 확인하는 방법
방법1. Build Path를 이용
프로젝트를 우클릭한다 -> Build Path -> Configure Build Path.. -> Source탭을 클릭 -> 하단의 Default Output folder
방법2. classPath파일을 참고
ctrl + shift + r -> .classpath파일을 연다.
PS.단, 위 내용에서 클래스패스가 변경될 경우 동기화가 되지 않기 때문에
두 군대 모두 바꿔줘야하지만 왠만해서 변경할 일이 없다.
3. 스프링에서의 클래스패스란
클래스패스란 여러개를 의미하는건지 이때까지는 몰랐었다. 쉽게 생각하면 클래스 파일이 생성되는 경로이다.
스프링의 경우 메이븐을 이용하여 빌드가 될때 컴파일이 필요없는 파일부터 필요한 파일까지도 /target/ 경로에 새로 빌드된 파일이 생성된다. 때문에 메이븐 환경에서는 src/java, src/resource, src/webapp등에 있는 파일들을 클래스패스로 인식하여 접근할 수 있고, /target/경로가 모든 소스가 빌드가 되어 클래스패스가 된다.
때문에 환경설정에서 파일의 경로를 지정할 때 classpath:를 사용하지 않아도 상관없다.
하지만, 메이븐이 아닌 일반적인 Java EE의 경우에는 별도로 빌드하여 target이라는 폴더에 재생성되는 것이 아니기 때문에 상단의 클래스패스를 확인하는 방법을 참고하여 실제로 클래스파일이 생성되는 경로만을 클래스패스로 사용할 수 있다.
4. 정리하자면
스프링 환경에서는 메이븐을 이용하여 빌드를 할때 target폴더에 한번에 재생성하기 때문에 모든 경로를 사용할 수 있어서 생략이 가능하다.
일반적인 Java EE 환경에서는 클래스는 빌드 자동화 툴이 없다. 컴파일된 클래스파일이 생성되는 위치가 정해져 있을 수 있기 때문에 클래스패스는 특정 경로이며, classpath:의 명시는 반필수이다.
'WEB 심화 > Common' 카테고리의 다른 글
인터페이스, API, UI, Jar, 라이브러리, 프레임워크 비교 (0) | 2023.11.30 |
---|---|
[네트워크] HTTP의 기본 원리와 RESTful 방식 (총 정리) (0) | 2023.11.29 |
[네트워크] 네트워크의 구조 및 정의 (총 정리) (0) | 2023.11.29 |
[데이터] 정규표현식 총정리 (Regular Expression) (0) | 2023.11.27 |