티스토리 뷰

오래된 프로젝트의 배포환경을 구성해달라는 요청을 받았다. ant 로 빌드스크립트를 작성하고 빌드를 수행했는데 다음과 같은 오류메세지가 나오면서 빌드가 정상적으로 되지 않았다. 

build-project:
    [javac] Compiling 1237 source files to /app/workspace/TESTPJT/build/classes
    [javac] /app/workspace/TESTPJT-dev/src/test/pjt/common/web/ConnectorServlet.java:45: error: unmappable character for encoding UTF-8
    [javac] 	                                                                   

 

build.xml에 build 시 UTF-8로 인코딩을 하도록 다음과 같이 설정은 해놓은 상태이다. 

<target name="build-project" depends="init">
  <javac includeantruntime="false" destdir="${dist.classes.dir}" encoding="UTF-8">
	

이렇게 하면 대부분의 문제는 해결되었다고 하는데 나는 처음부터 이상태였는데 인코딩 문제가 지속되었다. 

 

그렇다면 어디에 문제가 있는 상황일까?

 

사실 어마어마하게 삽질을 했다.. 이런적이 없었기 때문에.. Jenkins의 JAVA Global Properties 에서 JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 이것도 넣어보고 build.xml 파일의 charset이 us-ascii 라서 강제로 UTF-8로 변환도 해보고.. 등등 많은 삽질을 하였지만 성과는 없었다. 

 

답은 역시 오류로그에 있었다. 위에 나온 ConnectorServlet과 함께 문제가 되는 녀석을 찾아가서 file의 type을 살펴봤다. 살펴보는 방법은 다음과 같다. 

$ file -bi 파일명

다른 파일들은 다 charset이 utf-8로 나오는데 문제가 되는 녀석들은 charset이 ISO-8859였다.. 역시나 오래된 프로젝트는 무섭다. 무슨 코드가 숨어있는지.. 왜 이렇게 뒤죽박죽인지 아무도 모른다. 

조치는 간단하였다. 문제가 되는 파일의 내용을 복사해둔 뒤, encoding이 UTF-8인 파일을 복사해서 내용을 복사해둔 내용으로 바꿔치기 하였다. 그랬더니 잘 돌아간다. 

javac 수행을 하며 UTF-8로 인코딩 하라고 명령을 날렸는데 UTF-8이 아닌 녀석을 만나서 생긴 에러였다. 에러내용을 꼼꼼하게 살펴보고 전체가 아닌 몇몇 파일들만 문제라면 위처럼 조치해보자. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31