본문 바로가기

STUDY/JAVA

[JAVA] decodebase64 runtime exception

최근 작업하다가 어처구니 없는 실수? 삽질을 하게되었다.

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