최근 작업하다가 어처구니 없는 실수? 삽질을 하게되었다.
Base64.decodeBase64(data); // String data
바로 위 코드를 넣는 순간 지옥이 시작되었다.
로컬에서는 정상으로 작동하였으나,
서버에 올렸을때는 해당부분에 rumtime exception이 발생하였던 것이다.
runtime exception에 대해 정리 된 글이 많다.
간단하게 말하자면
실행단계에서 문제가 발생하였다.
근데!
추가적인 어떠한 오류 메세지도 없이 딸랑.
java.lang.runtimeexception: org.apache.commons.codec.binary.base64.decodebase64
위와 같은 메세지만 뜨는것이었다.
뭐 예를들어 NoSuchMethodError 라던가 있었으면 얼마나 좋았을가.
라이브러리는 commons-codec-1.11 이다.
근데 너무 이상하지 아니한가로컬에서는 아무리해도 정상작동을 하는데
서버에만 올리면 안되는것이그렇다고 서버에 jar파일이 없는것도 아니고..
그러다 로컬에 jar 파일 저장되어있는 라이브러리 싹 정리하고로컬에서 재시도 해보았더니
서버와 같은 오류가 뜬것이었다.
확인해보니 commons-codec을 품고있는 라이브러리가 있었으니
SAML-D-commons-codec-1.3 이라는 라이브러리 파일이었다.
해당 파일에 필요한 메소드가 있다는걸 인식하고,
commons-codec-1.11를 제거한 후
Base64.decodeBase64(data.getBytes()); // String data
SAML-D-commons-codec-1.3에 맞게 위와 같이 수정하였다.
로컬에서도 서버에서도 정상작동
같은 패키지 이름을 쓰고있는 두개의 라이브러리가 충돌이 일으켰는데
commons-codec보다 SAML-D-commons-codec-1.3를 인식하여
decodeBase64() 가 string 매개체를 쓰는 메소드를 찾지 못해 발생한 오류인거 같다.
결론 서버내에서는 lib 전부 지웠다가 다시 올리기때문에 다시 올리면서
SAML만 인식이 된게 아닐까 한다.
로컬에서 됐던건 새로운 lib를 그냥 추가하면서 인식되었기때문
끝
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] MalformedServerReplyException:Truncated server reply: '220 ' (0) | 2023.10.08 |
---|