Apache Tomcat 9.0.93을 실행하는 과정에서 log4j.xml 파일을 로드하는 중 다음과 같은 오류가 발생했다.
오류의 일부 내용을 보면 아래와 같다.
log4j:ERROR Could not parse url [file:/Users/사용자명/Library/CloudStorage/OneDrive-개인/프로젝트명/target/프로젝트명-1.0.0-BUILD-SNAPSHOT/WEB-INF/classes/log4j.xml].
com.sun.org.apache.xerces.internal.util.URI$MalformedURIException: Path contains invalid character: 개
개인 정보부분은 한글문자로 대체해서 표기했다.
다시 오류를 살펴보면 log4j.xml 파일 경로에 한글이 포함된 경우 발생하는 문제로, Java의 URI 처리 라이브러리가 이러한 문자를 포함한 경로를 처리하지 못하기 때문에 발생한 에러이다.
폴더 관리하려고 원드라이브 내에서 작업을 하다보니 이런 오류들을 피하기 위해서 사용자명, 폴더명 등 모두 영어로 만드는게 습관이 되었었는데 Ondrive는 한국 사용자라면.. 폴더가 자동으로 개인, 회사 이런식으로 추가가 되는 바람에 변경할 수 가 없었다.
해결하는 방법은 간단했다.
pom.xml
에 xercesImpl
라이브러리를 추가하는 것이다.
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.9.1</version>
</dependency>
의존성을 추가하였으면 maven을 재빌드 해주고 tomcat 서버를 다시 실행해주면 된다.
잘돌아가던 tomcat이 갑자기 서버를 재실행하니 돌아가지 않아서 당황했지만, 에러 메시지를 확인하는 것이 중요하다는 걸 또 한 번 느꼈다.ㅎㅎ
다른 작업을 진행할 때도 작업 환경에 한글 경로가 있는지 한 번 더 확인하고 미리 의존성도 추가해둬야겠다...
예전에도 이런적이 있었는데 확실히 에러 관련해서 정리도 해두는 것도 중요한 것 같다.