운영체제

[맥] Java 7 한글 파일명을 처리하지 못하는 문제 해결

지승준 2013. 4. 30. 12:25

JDK 1.6까지는 애플에서 제공되어 한글 파일명을 다루는데 큰 무리가 없었는데
JDK 1.7은 오라클에서 제공하면서 이것저서 바뀌어서 좀 고생을 했는데요

1. JDK 1.7 기본 인코딩이 EUC-KR이다
2. 한글 파일명을 정상적으로 처리하지 못한다.

이 두개가 가장 큰 문제였습니다.

1번을 해결하는 방법은 환경변수 _JAVA_OPTIONS를 이용하는 방법이 있습니다.

~$ export _JAVA_OPTIONS=-Dfile.encoding=UTF-8
~$ open -n /Applications/eclipse/Eclipse.app

_JAVA_OPTIONS 환경변수는 JVM이 자동으로 읽어서들이는 환경변수입니다.


2번은 좀 찾느라 고생했는데요. JDK 1.6까지는 이클립스를 실행 시킬때 LC_CTYPE 를 정상적으로 지정하고 실행 되는데
JDK 1.7에서는 LC_CTYPE를 지정하지 않고 이클립스가 실행 됩니다.
(출처: osx - Encoding issues on Java 7 file names in OS X - Stack Overflow )
따라서 이걸 지정해 주면 되는데요

~$ export LC_CTYPE=ko_KR.UTF-8
~$ open -n /Applications/eclipse/Eclipse.app

이제 3번째 문제가 나옵니다.

터미널에서만 프로그램을 띄울게 아니기에 GUI 어플에서도 동작할 전역변수 선언을 해야 하는데 마운틴 라이온에서는 예전에 사용하던 전역변수 선언이 대부분 먹지 않더군요.

현재 마운틴 라이온에서 유일하게 동작하는 방법은 launchd 설정 뿐입니다.

~$ launchctl setenv LC_CTYPE ko_KR.UTF-8
~$ launchctl setenv _JAVA_OPTIONS -Dfile.encoding=UTF-8

export 와는 다르게 중간에 = 대신 빈문자를 사용하는 것에 주의하셔야 합니다.

물론 이렇게 매번 터미널에서 실행할수는 없기에 부팅시 자동 실행할 필요가 있습니다.

/etc/launchd.conf 를 관리자 권한으로 열어서(처음에는 없습니다) 명령어 목록을 추가 하시면 됩니다.

~$ sudo vi /etc/launchd.conf
setenv LC_CTYPE ko_KR.UTF-8
setenv _JAVA_OPTIONS -Dfile.encoding=UTF-8

ms949


man 페이지에 나온것도 달리 홈디렉토리의 .launchd.conf는 정상적으로 동작 하지 않는것으로 보입니다.

이렇게 설정해주신후에 로그아웃 & 로그인을 해주시면 JDK 1.7 한글 문제를 어느정도 해결하실수 있습니다.

(주의: _JAVA_OPTIONS 에서 앞에 붙은 언더바와 마지막에 복수형 S를 잘못 기입하시면 인식되지 않습니다 ^^)

 

esc

:wq

exit