android ExceptionInInitializerError Causado por No se puede determinar los tipos de registro mientras HSSFWorkbook nuevo (inputStream)

Obtención de error

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:299) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) at java.util.concurrent.FutureTask.setException(FutureTask.java:219) at java.util.concurrent.FutureTask.run(FutureTask.java:239) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:856) Caused by: java.lang.ExceptionInInitializerError at bbaccp<init>(HSSFWorkbook.java:326) at bbaccp<init>(HSSFWorkbook.java:289) at bbaccp<init>(HSSFWorkbook.java:224) at bbaccp<init>(HSSFWorkbook.java:382) at bbaccp<init>(HSSFWorkbook.java:364) at com.d.link.dda(ExportUtils.java:134) at com.d.link.activity.ey.a(SplashScreen.java:55) at com.d.link.activity.ey.doInBackground(SplashScreen.java:51) at android.os.AsyncTask$2.call(AsyncTask.java:287) at java.util.concurrent.FutureTask.run(FutureTask.java:234) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:856) Caused by: bbacbdj: Unable to determine record types at bbacbdd.a(RecordFactory.java:434) at bbacbdd.<clinit>(RecordFactory.java:292) at bbaccp<init>(HSSFWorkbook.java:326) at bbaccp<init>(HSSFWorkbook.java:289) at bbaccp<init>(HSSFWorkbook.java:224) at bbaccp<init>(HSSFWorkbook.java:382) at bbaccp<init>(HSSFWorkbook.java:364) at com.d.link.dda(ExportUtils.java:134) at com.d.link.activity.ey.a(SplashScreen.java:55) at com.d.link.activity.ey.doInBackground(SplashScreen.java:51) at android.os.AsyncTask$2.call(AsyncTask.java:287) at java.util.concurrent.FutureTask.run(FutureTask.java:234) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:856) 

Para la segunda línea (nuevo HSSFWorkbook de InputStream) FileInputStream fileInS = new FileInputStream(outputXlsFile); hwb = new HSSFWorkbook(fileInS); FileInputStream fileInS = new FileInputStream(outputXlsFile); hwb = new HSSFWorkbook(fileInS);

donde org.apache.poi.hssf.usermodel.HSSFWorkbook es de la biblioteca apachePoi

No puedo ayudarme a explicar por qué se produce una excepción, pero puedo ayudarte a detener la aplicación cerrada.

El problema está vinculado a la clase ExceptionInInitializerError , que no es derivada por java.lang.Exception . En su lugar, se deriva de java.lang.Error superclase (véase la declaración ExceptionInInitializerError )

Por lo tanto, la solución es agregar un bloque de captura explícito para este tipo de excepción como, por ejemplo, uno de los siguientes:

 catch(ExceptionInInitializerError e) // catch exactly this error catch(Error e) // catch all Java errors (not exceptions!) catch(Throwable t) // catch all Java errors and exceptions 

Tenga en cuenta que los bloques de captura primero y segundo deben agregarse a sus capturas existentes, mientras que el tercero puede sustituirlas, ya que Throwable es superclase de las clases Java de Exception y Error .

Excel Records

En la terminología de la base de datos, un registro contiene toda la información o datos sobre un objeto específico que se ha introducido en la base de datos. En Excel, los registros se organizan normalmente en filas de hoja de cálculo con cada celda de la fila que contiene un elemento de información o valor.

Basado en el código de RecordFactory de

http://www.docjar.com/html/api/org/apache/poi/hssf/record/RecordFactory.java.html

Parece que tienes algunos objetos (en este caso, Records) que no son compatibles con una versión de poi que tienes. Parece que su registro no es de ningún tipo especificado en RecordFactory. Por lo que debe comprobar cómo en el lado del servidor se crean esos archivos y el código relacionado con los registros. O si se crean manualmente, debe comprobar la versión de Excel o de Open Office y ver qué tipo de registros admiten y compararlos con la biblioteca que está utilizando en dispositivos Android.

 private static final Class<? extends Record>[] recordClasses = new Class[] { 81 ArrayRecord.class, 82 BackupRecord.class, 83 BlankRecord.class, 84 BOFRecord.class, 85 BookBoolRecord.class, 86 BoolErrRecord.class, 87 BottomMarginRecord.class, 88 BoundSheetRecord.class, 89 CalcCountRecord.class, 90 CalcModeRecord.class, 91 CFHeaderRecord.class, 92 CFRuleRecord.class, 93 ChartRecord.class, 94 ChartTitleFormatRecord.class, 95 CodepageRecord.class, 96 ColumnInfoRecord.class, 97 ContinueRecord.class, 98 CountryRecord.class, 99 CRNCountRecord.class, 100 CRNRecord.class, 101 DateWindow1904Record.class, 102 DBCellRecord.class, 103 DefaultColWidthRecord.class, 104 DefaultRowHeightRecord.class, 105 DeltaRecord.class, 106 DimensionsRecord.class, 107 DrawingGroupRecord.class, 108 DrawingRecord.class, 109 DrawingSelectionRecord.class, 110 DSFRecord.class, 111 DVALRecord.class, 112 DVRecord.class, 113 EOFRecord.class, 114 ExtendedFormatRecord.class, 115 ExternalNameRecord.class, 116 ExternSheetRecord.class, 117 ExtSSTRecord.class, 118 FilePassRecord.class, 119 FileSharingRecord.class, 120 FnGroupCountRecord.class, 121 FontRecord.class, 122 FooterRecord.class, 123 FormatRecord.class, 124 FormulaRecord.class, 125 GridsetRecord.class, 126 GutsRecord.class, 127 HCenterRecord.class, 128 HeaderRecord.class, 129 HideObjRecord.class, 130 HorizontalPageBreakRecord.class, 131 HyperlinkRecord.class, 132 IndexRecord.class, 133 InterfaceEndRecord.class, 134 InterfaceHdrRecord.class, 135 IterationRecord.class, 136 LabelRecord.class, 137 LabelSSTRecord.class, 138 LeftMarginRecord.class, 139 LegendRecord.class, 140 MergeCellsRecord.class, 141 MMSRecord.class, 142 MulBlankRecord.class, 143 MulRKRecord.class, 144 NameRecord.class, 145 NoteRecord.class, 146 NumberRecord.class, 147 ObjectProtectRecord.class, 148 ObjRecord.class, 149 PaletteRecord.class, 150 PaneRecord.class, 151 PasswordRecord.class, 152 PasswordRev4Record.class, 153 PrecisionRecord.class, 154 PrintGridlinesRecord.class, 155 PrintHeadersRecord.class, 156 PrintSetupRecord.class, 157 ProtectionRev4Record.class, 158 ProtectRecord.class, 159 RecalcIdRecord.class, 160 RefModeRecord.class, 161 RefreshAllRecord.class, 162 RightMarginRecord.class, 163 RKRecord.class, 164 RowRecord.class, 165 SaveRecalcRecord.class, 166 ScenarioProtectRecord.class, 167 SelectionRecord.class, 168 SeriesRecord.class, 169 SeriesTextRecord.class, 170 SharedFormulaRecord.class, 171 SSTRecord.class, 172 StringRecord.class, 173 StyleRecord.class, 174 SupBookRecord.class, 175 TabIdRecord.class, 176 TableRecord.class, 177 TableStylesRecord.class, 178 TextObjectRecord.class, 179 TopMarginRecord.class, 180 UncalcedRecord.class, 181 UseSelFSRecord.class, 182 VCenterRecord.class, 183 VerticalPageBreakRecord.class, 184 WindowOneRecord.class, 185 WindowProtectRecord.class, 186 WindowTwoRecord.class, 187 WriteAccessRecord.class, 188 WriteProtectRecord.class, 189 WSBoolRecord.class, 190 191 // chart records 192 BeginRecord.class, 193 ChartFRTInfoRecord.class, 194 ChartStartBlockRecord.class, 195 ChartEndBlockRecord.class, 196 // TODO ChartFormatRecord.class, 197 ChartStartObjectRecord.class, 198 ChartEndObjectRecord.class, 199 CatLabRecord.class, 200 EndRecord.class, 201 LinkedDataRecord.class, 202 SeriesToChartGroupRecord.class, 203 204 // pivot table records 205 DataItemRecord.class, 206 ExtendedPivotTableViewFieldsRecord.class, 207 PageItemRecord.class, 208 StreamIDRecord.class, 209 ViewDefinitionRecord.class, 210 ViewFieldsRecord.class, 211 ViewSourceRecord.class, 212 }; 

La instancia de tarea debe crearse en el subproceso de la interfaz de usuario.

Debe crear su instancia de tarea en el subproceso de la aplicación principal. Solucionará su problema. La mejor manera de inicializar las cosas es crear una clase Application en su proyecto e inicializar su tarea en esa clase de aplicación. La clase Application tiene alcance global y puede mantener el estado de su aplicación.

  • Cómo crear un archivo excel en android?
  • Combinación de celdas en Excel mediante Apache POI
  • Cómo resolver el java.lang.VerifyError: org / apache / poi / xssf / usermodel / XSSFWorkbook?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.