Android app으로 word 파일(.docx/.doc)를 볼 필요가 생겨서 관련된 library를 찾다가 먼저 Apache POI를 발견했다. 아직 App 개발에 익숙하지 않아 개발 환경을 꾸미는 것만으로도 구글링하면서 진땀을 뺐는데, 겨우겨우 관련 .jar file을 import하고 compile을 해보니 이게 웬 걸. duplicate class 어쩌구 하는 error가 떡하니 뜨는게 아닌가?

 

 

  구글링으로 해당 error의 이유를 보니 애초에 배포된 xmlbeans-2.6.0.jar 내에 중복된 이름의 class가 있어 그렇다고 한다. 이 문제를 해결하려면 직접 xmlbeans-2.6.0.jar를 푼 다음(unzip) 다시 jar로 repack을 해야한다는데, 일단 개발환경 내에 jar 명령어가 동작할 수 있도록 JDK를 설치해야 했다(JDK는 android studio의 구동을 위해 필히 설치해야하는 항목이었으므로 보통은 C:\Program Files\Java 내에 jdk1.x.x_xx 따위의 directory로 정리되어 설치되어 있을 것이다). 그리고 다른 경로에서도 java.exe를 활용할 수 있도록 window의 Path 환경변수에 (내 컴퓨터 내 Java jdk 경로)\bin을 추가해 놓아야 했다.

   

  

 

  그리고 POI-bin 내에 xmlbeans-2.6.0.jar 파일을 찾아 압축을 푼다. 나는 여기서 7-Zip을 활용했다. 압축을 풀다 보면 문제가 됐었던 중복된 class 파일들에 대해 대체여부를 묻는 창이 뜨는데 '모두 예(A)'를 선택하여 대체했다.

 

  다음으로 콘솔을 실행하여 압축을 푼 해당 directory에 들어가서 'jar cf (repack할 jar file명).jar -C *'을 수행했다. 다른 분들의 조언에 따르면 'jar cf (repack할 jar file명).jar -C * .'을 해야한다는데, 내 컴퓨터 환경에서는 그렇게 하면 환경 자체의 문제점이 있는 모양인지 손상된 jar file이 생성되어 제대로 동작하지 않았다. 혹시나 나와 비슷한 문제를 겪고 있는 분들이 있다면 jar 명령어에 관한 reference를 찾아 살짝 바꿔서 실행해 보면 원하는 결과가 나올지도 모르겠다.

 

 

  이제 새로 생성된 xmlbeans-2.6.0-repack.jar를 app library에 추가하여 compile/run을 시켜보았다. 그 결과 실행은 되긴 했으나 app이 XWPFDocument(); method를 거치는 순간 중단되는 문제가 발생하였다. 그러나 이 문제는 xmlbeans-2.6.0.jar 파일의 유무와 상관없이 그전에도 일어났던 터라 해당 파일과는 상관이 없으리라 생각된다. 이제 이 다음 문제를 해결해야지.

 

 

+ Recent posts