MasterController에서 ResourceBundle.getBundle() 질문입니다!
427
投稿した質問数 12
안녕하세요 제로님 강의 잘 듣고 있습니다!
다른 분이 질문 남겨주신 것처럼 저도 세팅 후 하나씩 추가해보고 싶어서 그렇게 진행하고 있습니다.
MasterController에서 ResourceBundle init = ResourceBundle.getBundle("com.code5.fw.init");
부분이 어떻게 동작되는 것인지 이해가 잘 가지 않아 질문드립니다.
제 폴더 구조는 위 사진과 같고 classpath는 아래와 같이 강의에서 나온 것과 크게 다르지 않습니다.
컴파일 했을 때, WEB-INF 하위에 클래스만 생기고 init.properties 파일은 생기지 않는 것 같은데 강의에서 어떻게 톰캣이 com.code5.fw.init을 찾을 수 있는 건가요?
제 로컬 환경에서는 Can't find bundle for base name com.code5.fw.init 이라고 오류가 발생하네요.
WEB-INF 하위에 있는 fw 폴더 하위에 init.properties를 넣어주는 경우에는 잘 동작 했습니다!
回答 1
1
안녕하세요. 제로입니다.
ResourceBundle init = ResourceBundle.getBundle("com.code5.fw.init");
동작 과정을 설명드리겠습니다.
우리가 프로그램을 개발할 때 사용하는 통합개발환경(IDE, 인텔리제이, 이클립스)은
많은 기능을 제공하고 있는데 그 중 자주 사용하는 기능은 자원관리와 빌드 그리고 실행 기능 입니다.
자원관리는 내가 만든 소스코드를 쉽게 찾고 수정할 수 있게 해주고
빌드는 만들어진 소스코드를 컴파일 하고 실행 가능한 위치에 복사시켜주는 기능입니다.
실행은 빌드된 자원을 기준으로 실행하게 되구요.
물어보신 내용을 이해하려면 빌드와 실행을 이해하시면 됩니다.
자원관리를 통해 init.properties 는 만들어지고 내용이 수정되고
빌드를 통해 init.properties 자원이 특정 위치로 복사됩니다.
인텔리제이 프로젝트 구성을 보면 빌드패스가 있을텐데
빌드 패스는 [프로젝트루트]/WEB-INF/classes 로 설정이 되어 있고
빌드 대상인 init.properties 가 [프로젝트루트]/WEB-INF/classes/com/init.properties 로 복사된다고 보시면 됩니다.
물론 자원관리 기능이 있는 IDE 에 init.properties 자원이 2개가 있으면 불편하기 때문에
IDE 에선 빌드 디렉토리 [프로젝트루트]/WEB-INF/classes 는 조회되지 않습니다.
빌드가 잘 되었으니 아래 코드가 실행을 합니다.
ResourceBundle init = ResourceBundle.getBundle("com.code5.fw.init");
IDE 는 프로젝트 구성에 사용된 CLASSPATH 를 찾고 JVM 에 넘겨줍니다.
그리고 JVM 은 ResourceBundle.getBundle("com.code5.fw.init"); 컴파일된 바이트 코드를 이해하고
/com/code5/fw/init.properties 자원을 찾습니다.
자원을 찾기 위해 CLASSPATH 의 정보를 결합 /com/code5/fw/init.properties 를 찾게 되는데
이미지로 캡쳐해 주신 디렉토리 중 첫번째(0) 디렉토리 와 /com/code5/fw/init.properties 를 결합 파일을 찾고 init.properties 를 읽게 되는 겁니다.
개발자가 가장 고민하는 것 중 하나는 내가 만든 소스코드를 어떻게 하면 잘 찾게 하는 것에 있는데
ResourceBundle 클래스는 이를 위해 클래스패스를 활용한다고 보시면 됩니다.
"Can't find bundle " 오류가 발생하면
제일 먼저 클래스패스를 확인하고 클래스 패스 경로에 해당 properties 자원이 있는지 확인하면 됩니다.
질문 감사하구요. 도움이 되었길 바랍니다.
* 질문을 잘못 이해 했네요. 빌드는 java 파일일경우 컴파일 후 복사돠고 java 파일이 아닐경우 복사만 되는 과정입니다.
클래스는 복사되는데 프로퍼티파일이 없는 경우라 하면 인텔리제이 빌드 설정에서 복사 예외 자원이 있는지 확인해 보시겠어요.
Entity 동등성 비교
0
3
1
패키지 구분에 대해 궁금한게 있습니다
0
12
1
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
19
1
갑자기 채점 사이트가 바뀌었어요
0
19
1
문제 리스트 페이지
0
22
1
part8 Notion 링크
0
23
1
채점 사이트 관련 질문드립니다
0
20
1
인텔리제이 MCP 서버 설정 관련
0
27
1
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
28
2
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
37
2
질문있습니다
0
26
1
1번 문제 질문입니다.
0
31
1
이제 막 자바 문법 배웠는데, 이 강의를 수강해도 괜찮을까요?
0
171
1
섹션 2 의 심화 파트에 대한 (파일올리기) 질문이에요
0
199
2
inflearn08 프로젝트에서 FW_VIEW 테이블이 KEY라는 칼럼이 없다고 해요.
0
418
1
m1 맥북 환경 구성 오류
0
642
2
getRequestDispatcher() 질문드립니다.,
0
1596
1
혹시 강의 관련된 내용을 블로그에 정리해서 올려도 되나요?
0
479
1
inflearn01에서 [APP_ROOT]는 어떻게 처리해야 하나요?
0
368
1
인텔리제이 디버그 모드에서는 어떻게 쓰레드를 볼 수 있나요?
0
2011
1
인텔리제이 컴파일 에러
1
1843
11
프로젝트 생성에 대한 설명을 받을 수 있을까요?
0
352
4
개정판 이전 강의에 있던 질문과 답입니다.
0
380
0
개정 이전 버전 질문도 여기에 올려도 되는지 궁금합니다.
0
414
2

