[ClassLoader 퀴즈 6] SpringSprout는 과연 Whiteship의 이름을 알 수 있을까?
@Test
public void illegalAccessException() throws Exception {
FileUrlClassLoader fUCL1 = new FileUrlClassLoader(CLASSPATH, null);
Class whiteshipClass = fUCL1.loadClass(WHITESHIP);
Object whiteship = whiteshipClass.newInstance();
public void illegalAccessException() throws Exception {
FileUrlClassLoader fUCL1 = new FileUrlClassLoader(CLASSPATH, null);
Class whiteshipClass = fUCL1.loadClass(WHITESHIP);
Object whiteship = whiteshipClass.newInstance();
System.out.println(this.getClass() + " " + this.getClass().getClassLoader());
System.out.println(whiteshipClass + " " + whiteshipClass.getClassLoader());
whiteshipClass.getDeclaredField("name").get(whiteship);
}
public class Whiteship2 {
String name = "keesun";
}
이 테스트를 실행한 결과 중 일부는 다음과 같습니다.
class sandbox.classloader.ClassloaderTest sun.misc.Launcher$AppClassLoader@19821f <- CL1
class sandbox.classloader.Whiteship2 ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ<- CL
1. CL의 값은 CL1일까요? 아니면 전혀 다른 값?
2. 그 뒤 코드의 굵은 줄을 실행한 결과는 어찌됐을까요? 무사히 실행하고 keesun을 가져왔을까요? 에러가 났을까요? 에러가 났다면 어떤 에러가 났을까요?