2015-01-27 19 views
5

Sto cercando di generare Excel utilizzando Xssf API perché la sua occupazione di memoria è di piccole dimensioni. Sta funzionando bene nella mia macchina locale che sta avendo jdk1.7. Ma quando provo a eseguirlo su UNIX dove la versione java è 1.6.0_75 mi dà il seguente errore.java.lang.NoClassDefFoundError: Impossibile inizializzare classe org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller

java.lang.NoClassDefFoundError: Could not initialize class org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller

ho seguito barattoli nel mio percorso di classe

  • POI-3.11-20141221.jar
  • POI-excelant-3.11-20141221.jar
  • POI-OOXML-3.11- 20141221.jar
  • POI-OOXML-schemas-3.11-20141221.jar
  • XMLBeans-2.6.0.jar
  • xercesImpl.jar

Ho verificato che poi-3.11-20141221.jar ha la classe ZipPackagePropertiesMarshaller.

Sembra che manchi qualche vaso. Mi manca qualcosa?

risposta

4

Ho trovato una soluzione al mio problema. Ho sostituito poi-3.11-20141221.jar con poi-ooxml-3.9.jar. Ha funzionato.

+0

questo è stato un vero toccasana per me, grazie! – smuggledPancakes

0

La versione 1.6.0_75 di Java non esiste, suppongo che tu abbia commesso un errore di battitura. L'ultimo aggiornamento di Java 6 è l'aggiornamento 45 (6u45).

La classe ZipPackagePropertiesMarshaller viene caricata in fase di esecuzione di sicuro. L'eccezione NoClassDefFoundError si verifica durante la fase di inizializzazione; se l'eccezione fosse stata ClassNotFoundException, sarebbe stato diverso ...

La classe ZipPackagePropertiesMarshaller è inalterata tra le versioni 3.11 e 3.9, ma la PackagePropertiesMarshaller classe estesa da ZipPackagePropertiesMarshaller è cambiato: la principale modifica riguarda l'uso di StAX in la versione più recente.

La distribuzione di StAX in arrivo con Java 6, ma la versione di Java 6 update 18 (http://www.oracle.com/technetwork/java/javase/6u18-142093.html) introduce la versione dell'API di StAX 1.2.

Utilizzare Java 6u18 o successivo. Questo dovrebbe risolvere il tuo problema.

Nelle Domande frequenti ufficiali ci sono alcune indicazioni su un problema simile: https://poi.apache.org/faq.html#faq-N1017E.

Inoltre, la soluzione che hai trovato non è la migliore, vedi l'ultima FAQ dei POI.

Problemi correlati