금요일, 11월 21, 2008

Eclipse Debug, debug project

요 몇일 머리 아픈부분에 대한 정리.

Window32 시스템에서 Eclipse를 자바 디버그 모드로 실행했을 경우 시스템 환경변수(System.env()) 값들이 모두 대문자로 나온다. (unix나 mac등은 원래대로 나온다)
(org.eclipse.debug.core 프로젝트의 LaunchManager.getNativeEnvironment())

/* (non-Javadoc)
* @see org.eclipse.debug.core.ILaunchManager#getNativeEnvironment()
*/
public synchronized Map getNativeEnvironment() {
if (fgNativeEnv == null) {
Map casePreserved = getNativeEnvironmentCasePreserved();
if (Platform.getOS().equals(Constants.OS_WIN32)) {
fgNativeEnv= new HashMap();
Iterator entries = casePreserved.entrySet().iterator();
Map.Entry entry = null;
String key = null;
while (entries.hasNext()) {
entry = (Entry) entries.next();
key = ((String)entry.getKey()).toUpperCase();
fgNativeEnv.put(key, entry.getValue());

}
} else {
fgNativeEnv = new HashMap(casePreserved);
}
}
return new HashMap(fgNativeEnv);
}

그러나, 여기서 한가지 트랩이 존재했는데....(eclipse의 버그라면 버그이기도하고...)

이 디버그 모드로 실행할때, 항상 동일한 결과가 나오지 않았다.
실행하려는 프로젝트가 jre를 참조하면 debug모드로 실행해도 원래값이 출력된다.
jdk로 실행했을경우 에만 대문자로 나온다.

왜 그런지는 집에가서 좀더 적도록하고.. 우선..


더 궁금한것은 왜 이클립스 jdt 개발 팀은 디버그 모드일때 원도우 시스템만 대문자로 바꾸었을까?


나의 한계이다.

댓글 없음:

댓글 쓰기