2014-09-21 8 views
6

Mam problem z apache poi excel api (xlsx). Używam Androida Studio i dodałem biblioteki poi do folderów "libs". Ten błąd pojawia się z jakiegoś powodu (patrz poniżej). Jak mogę to rozwiązać? Czy mógłbyś wyjaśnić, w jaki sposób zidentyfikowałeś problem?Błąd zduplikowanej klasy w Androidzie podczas włączania Apache POI

xmlbeans-2.6.0, poi-ooxml-schemas-3.10.1-20140818, poi-ooxml-3.10.1-20140818, poi-3.10.1-20140818, log4j-1.2.13, junit-4.11, dom4j-1.6.1, commons-logging-1.1, commons-codec-1.5

Dzięki!

Moja build.gradle wygląda następująco (z wyłączeniem generycznego innych rzeczy) ...

dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') }

android { packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } }

Moja app.iml ma zduplikowane wpisy albo ...

Błąd

Error:Class org.apache.xmlbeans.xml.stream.Location has already been added to output. Please remove duplicate copies. compiler that did not target the modern .class file format. The recommended (org.apache.log4j.chainsaw.ControlPanel$1) that doesn't come with an associated EnclosingMethod attribute. This class was probably produced by a solution is to recompile the class from source, using an up-to-date compiler 1 error; aborting

+0

rozwiązałeś? –

Odpowiedz

1

Plik Xmlbeans 2.6 JAR od Maven Central zawiera zduplikowane wpisy klas. XMLBeans JIRA ma issue open dla problemu. Dopóki nie opublikują nowego JAR-a, myślę, że zamierzam rozpakować słoik, który nadpisze duplikaty, a następnie ponownie go rozpakuję i na teraz ustawię w katalogu libs.

1

Należy pamiętać, że istnieje wiele problemów, które mogą wystąpić podczas korzystania z Apache POI na Androidzie. Zduplikowanych klas w XmlBeans można obecnie uniknąć tylko poprzez przepakowanie słoika.

Obecnie istnieją dwa projekty, które próbują rozwiązać większość problemów, oba pakiety przepakowują wszystkie klasy, w tym wszystkie zależności, do jednego pliku jar, aby ułatwić wdrażanie. Wykonano także pewne operacje cieniowania w celu uniknięcia problemów z javax-namespace, na które Android nie zezwala.

  1. https://github.com/andruhon/android5xlsx
  2. https://github.com/centic9/poi-on-android/ (mainted przeze mnie)

Pierwszy z nich opiera się obecnie na UM 3.12, natomiast drugi może być ponownie skompilowany z nowszymi wersjami UM łatwiej.