우연히 잘알지도 못하는 java쪽 프로그램을 수정하고 컴파일하다 아래와 같은 경고를 받았다.
warning: BASE64Decoder is internal proprietary API and may be removed in a future release
import sun.misc.BASE64Decoder;
^
BASE64Decoder는 내부 API이며 앞으로 없어질지도 모른다는 경고이다.
이전부터 사용하던 코드라 별 생각없이 진행했는데 원하는 결과를 받지 못했고 확인결과 이 API에서 문제를 발생시켰다.
경고마냥 없어졌는지도 모른다.
검색을 해보니 java버전을 낮추면 사용가능하다는 조삼모사식 처방전만 널려있다.
그렇게 하고 싶다면 굳이 말리지는 않겠지만 원인이 있으면 해결하는 것이 코더의 기본 덕목 아닌가.
조금 더 검색해보니 대처할 수 있는 방법이 있다.
0. 원래 사용하던 소스
import sun.misc.BASE64Decoder;
...
public static byte[] decode (String encrypted) throws Exception {
return new BASE64Decoder ().decodeBuffer (normalText);
}
1. 내부 API 사용하기
경고에 써 있듯 java8부터는 Base64가 내부에 포함되었다고 한다.
import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Base64.Encoder;
...
public static byte[] decode (String encrypted) throws Exception {
return Base64.getDecoder ().decode (encrypted.getBytes ());
}
2. 오픈 소스 사용하기
apache그룹에서 제공하는 API이다.
import org.apache.commons.codec.binary.Base64;
...
public static byte[] decode (String encrypted) throws Exception {
return Base64.decodeBase64 (encrypted.getBytes ());
}
임시 땜빵도 좋지만 근본적인 원인을 찾고 해결하는게 더 좋지 않을까한다.
아무리 copy & paste에 익숙해 있어도 마음만은 프로그래머이니까.
P.S. : java는 잘 모르니 질문을 올려도 이해를 못하니 java 전문가에게 물어보시길...
'컴퓨터' 카테고리의 다른 글
PlatformIO in VSCode error (0) | 2023.07.27 |
---|---|
node.js에서 java 호출하기 (0) | 2022.03.15 |
MacOS FileZilla 대기파일 삭제 (0) | 2022.01.12 |
저항값 보기 (0) | 2019.09.20 |
XPlanet의 추억 (1) | 2019.04.06 |