* Java classpath 설정방법
1. -classpath src1;src2;A.jar;B.jar
2. -cp src1;src2;A.jar;B.jar
3. -Djava.class.path=src1;src2;A.jar;B.jar
4. set CLASSPATH=src1;src2;A.jar;B.jar
* classpath 옵션이 두 개 이상이면
java -cp src1 -cp src2 -cp src3 Test
-> 마지막 옵션 (src3)만 적용된다.
* -cp, -classpath -Djava.class.path 옵션을 섞어서 쓰면
java -Djava.class.path=src1 -cp src2 Test
-> 마지막 옵션 (src2)만 적용된다.
* ClassLoader 종류
- Bootstrap ClassLoader : $JAVA_HOME/jre/lib/rt.jar
- Extension ClassLoader : $JAVA_HOME/jre/lib/ext/*.jar
- Application ClassLoader : $CLASSPATH
* 상위 ClassLoader에 있는 Class가 우선순위가 높다
* ClassLoader C1에서 로드된 클래스 A가 참조하는 클래스 B는 반드시 ClassLoader C1 혹은 C1보다 상위의 ClassLoader에서 찾을 수 있어야 한다.
1. -classpath src1;src2;A.jar;B.jar
2. -cp src1;src2;A.jar;B.jar
3. -Djava.class.path=src1;src2;A.jar;B.jar
4. set CLASSPATH=src1;src2;A.jar;B.jar
* classpath 옵션이 두 개 이상이면
java -cp src1 -cp src2 -cp src3 Test
-> 마지막 옵션 (src3)만 적용된다.
* -cp, -classpath -Djava.class.path 옵션을 섞어서 쓰면
java -Djava.class.path=src1 -cp src2 Test
-> 마지막 옵션 (src2)만 적용된다.
* ClassLoader 종류
- Bootstrap ClassLoader : $JAVA_HOME/jre/lib/rt.jar
- Extension ClassLoader : $JAVA_HOME/jre/lib/ext/*.jar
- Application ClassLoader : $CLASSPATH
* 상위 ClassLoader에 있는 Class가 우선순위가 높다
* ClassLoader C1에서 로드된 클래스 A가 참조하는 클래스 B는 반드시 ClassLoader C1 혹은 C1보다 상위의 ClassLoader에서 찾을 수 있어야 한다.