2013-01-18 2 views
0

sun.misc.BASE64Decoder 클래스를 사용하고있는 XPage에서 Base64 문자열을 디코드하려고했습니다. 그러나 Java developer should not write programs that call 'sun' packages에 따르면. 나는 com.ibm.misc.BASE64Decoder을 우연히 만났을 때 대안을 찾고있었습니다. 그것은 나를 위해 sun.misc.BASE64Decoder 같은 결과로 일했습니다. 그래서 개발자가이 패키지와 클래스를 사용하는 것이 괜찮은지 알고 싶습니다. 아니면 '태양'패키지처럼 피할 수 있습니까?"com.ibm.misc"패키지 및 클래스 지원

또한 Base126에 Apache Commons을 사용할 수 있지만 외부 JAR에 대한 의존성을 최소화하고 싶습니다.

+4

['javax.xml.bind.DatatypeConverter # parseBase64Binary']의 문제점 (http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/DatatypeConverter.html#parseBase64Binary%) 28java.lang.String % 29)? – mre

+0

@mre : 나는 자바와 같은 클래스가 존재한다는 사실을 정말로 모르고있었습니다. 감사! 그래서 나는'printBase64Binary'를 사용하여 인코딩 할 것입니다. 맞습니까? – Naveen

답변

4

com.ibm.misc.BASE64Decoder을 사용하면 sun.misc.BASE64Decoder과 똑같은 문제가 발생합니다. 이는 특정 JVM 구현 (이 경우에는 IBM의 JVM)에만있는 내부 클래스입니다.

Oracle의 JVM에는 com.ibm.misc.BASE64Decoder이 없으므로이 클래스를 사용하면 프로그램이 Oracle의 JVM에서 작동하지 않습니다. NoClassDefFoundError으로 실패합니다.

Java SE 6 이후 표준 Java API의 일부인 JAXB API의 일부인 javax.xml.bind.DatatypeConverter 클래스에있는 주석에서 mre가 참조하는 방법을 사용할 수 있습니다.

+1

사실이지만 그는 IBM의 XPages 서버를 사용하고 있습니다. IBM JVM 이외의 다른 제품에서 실행될 가능성은 거의 없습니다. –