토비의 스프링 책을 공부하면서 GenericXmlApplicationContext객체를 생성하면서 applicationContext.xml의 경로를 넣어주어야했다. 책에서
시작하는 /가 없는 경우에도 항상 루트에서부터 시작하는 클래스패스라는 점을 기억해두자
라는 말이 나왔다. 클래스패스의 개념이 부족했던 나는 바로 경로를 적을 수 없었고 어디에 applicationContext.xml을 위치시켜야 하는지 알 수 없었다.
우리가 자바 프로그래밍을 할 때, 현재 작성하고 있는 클래스에서 다른 클래스를 사용하기 위해 다음과 같이 쓴다.
import org.javaguy.coolframework.MyClass;
벌크 임포트할 경우는 이렇게 쓴다.
import org.javaguy.coolframework.*;
임포트를 하고 나면 이런식으로 쓰는 것이 가능하다.
MyClass mine = new MyClass();
JVM은 자바클래스 파일의 위치를 알아야한다.
만약에 JVM이 모든 폴더를 다 찾아보면 비효율 적이다. 따라서 JVM이 클래스파일을 찾을 수 있게 위치의 리스트들을 제공해야한다. 이러한 리스트들이 클래스패스이다. 클래스패스 안에 폴더나 jar파일을 위치시켜 찾고자하는 파일을 빠르게 찾을 수 있다.
우선, 가정을 해보자.
프로젝트 이름이 'output'이고, 이 프로젝트 안에 'MyClass'를 작성하고 있다고 해보자.
클래스파일은 아마 이곳에 위치할 것이다.
output/org/javaguy/coolframework/MyClass.class
MyClass.class파일을 찾기 위해서는 경로에 모든 패키지 구조가 아닌 패키지 이름만 포함하고 있으면 된다. 왜냐하면 import구문에 정보가 다 있기 때문.
이제 또 다른 가정을 해보자. CoolFramework가 .jar파일의 형태로 있다. 그리고 lib 디렉토리 안에 있다고 해보자. 클래스패스에 lib/CoolFramework.jar를 추가 해주어야지 클래스파일을 찾는 것이 가능하다.
CLASSPATH에는 다음이 포함된다.
file>Project Settings>Modules

이곳에서 클래스패스를 설정할 수 있다.
*applicationContext.xml을 정상적으로 읽기 위해서는 클래스패스안에 위치시켰어야했다.
참고한 곳
https://stackoverflow.com/questions/2396493/what-is-a-classpath-and-how-do-i-set-it