2010-05-09 4 views
3

이것은 Mirth이라는 애플리케이션을 사용하고 있지만 실제로는 Base64로 인코딩되었는지 여부를 확인하는 방법으로 Apache Commons 라이브러리 내부에서 오는 것으로 보입니다. 모든 docs는 유일한 반환이 진실하거나 틀린다고 말한다, 그래서 나는 어떻게 얻는가 -61?이 방법으로 -61 오류가 발생합니다.

-61 
org.apache.commons.codec.binary.Base64.isBase64(Base64.java:137) 
org.apache.commons.codec.binary.Base64.discardNonBase64(Base64.java:478) 
org.apache.commons.codec.binary.Base64.decodeBase64(Base64.java:374) 
org.apache.commons.codec.binary.Base64.decode(Base64.java:220) 
com.webreach.mirth.plugins.pdfviewer.PDFViewer.viewAttachments(PDFViewer.java:51) 
com.webreach.mirth.client.ui.browsers.message.MessageBrowser$16.doInBackground(MessageBrowser.java:1429) 
com.webreach.mirth.client.ui.browsers.message.MessageBrowser$16.doInBackground(MessageBrowser.java:1426) 
org.jdesktop.swingworker.SwingWorker$1.call(SwingWorker.java:276) 
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
java.util.concurrent.FutureTask.run(FutureTask.java:138) 
org.jdesktop.swingworker.SwingWorker.run(SwingWorker.java:315) 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
java.lang.Thread.run(Thread.java:637) 

답변

4

가능성이 높습니다. ArrayIndexOutOfBoundsException입니다. -61은 아마도 색인입니다. http://kickjava.com/src/org/apache/commons/codec/binary/Base64.java.htm 가입일

:

134  private static boolean isBase64(byte octect) { 
135   if (octect == PAD) { 
136    return true; 
137   } else if (base64Alphabet[octect] == -1) { // <--- 
138    return false; 
139   } else { 
140    return true; 
141   } 
142  } 

명백하게 입력 Base64로 인코딩되지 않는다.

+0

실제로 왜 그런지는 모르겠지만 프로젝트 관리자는이 버그를 수정하지 않기로 결정했습니다. https://issues.apache.org/jira/browse/CODEC-32 – alfasin

관련 문제