2017-09-19 6 views
0

Je suis tring pour écrire des données dans Excel en utilisant Apache, je reçois erreur dans cette ligne XSSFWorkbook classeur = new XSSFWorkbook(); J'ai posté mon journal des erreurs ci-dessous s'il vous plaît vérifier.erreur: java.lang.NoClassDefFoundError: Résolution échouée de: Lorg/apache/xmlbeans/XmlOptions;

Process: app.msupply.com.ideaurben, PID: 28508 
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/xmlbeans/XmlOptions; 
at org.apache.poi.POIXMLDocumentPart.<clinit>(POIXMLDocumentPart.java:53) 
at app.msupply.com.ideaurben.Adapter.ReportcateorieslistAdapter$MyViewHolder$2.onResponse(ReportcateorieslistAdapter.java:384) 
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 
at android.os.Handler.handleCallback(Handler.java:746) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5443) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.xmlbeans.XmlOptions" on path: DexPathList[[zip file "/data/app/app.msupply.com.ideaurben-1/base.apk"],nativeLibraryDirectories=[/data/app/app.msupply.com.ideaurben-1/lib/arm, /vendor/lib, /system/lib]] 
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
at org.apache.poi.POIXMLDocumentPart.<clinit>(POIXMLDocumentPart.java:53)  
at app.msupply.com.ideaurben.Adapter.ReportcateorieslistAdapter$MyViewHolder$2.onResponse(ReportcateorieslistAdapter.java:384)  
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)  
at android.os.Handler.handleCallback(Handler.java:746)  
at android.os.Handler.dispatchMessage(Handler.java:95)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5443)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)  
Suppressed: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlOptions 
at java.lang.Class.classForName(Native Method) 
at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
... 11 more 
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 

mes libs dossier: i ajouter toute la bibliothèque dans le dossier libs. enter image description here

Mon java Code de classe:

try { 

      String FILE_NAME = "/tmp/MyFirstExcel.xlsx"; 
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      XSSFSheet sheet = workbook.createSheet("Datatypes in Java"); 
      Object[][] datatypes = { 
        {"Datatype", "Type", "Size(in bytes)"}, 
        {"int", "Primitive", 2}, 
        {"float", "Primitive", 4}, 
        {"double", "Primitive", 8}, 
        {"char", "Primitive", 1}, 
        {"String", "Non-Primitive", "No fixed size"} 
      }; 
      int rowNum = 0; 
      System.out.println("Creating excel"); 
      Iterator<org.apache.poi.ss.usermodel.Row> rowIterator = sheet.iterator(); 
      for (Object[] datatype : datatypes) { 
       Row row = sheet.createRow(rowNum++); 
       int colNum = 0; 
       for (Object field : datatype) { 
        Cell cell = row.createCell(colNum++); 
        if (field instanceof String) { 
         cell.setCellValue((String) field); 
        } else if (field instanceof Integer) { 
         cell.setCellValue((Integer) field); 
        } 
       } 
      } 
      FileOutputStream outputStream = new FileOutputStream(FILE_NAME); 
      workbook.write(outputStream); 
     // workbook.close(); 


     } catch (IOException e) { 
      e.printStackTrace(); 
     } /*catch (JSONException e) { 
      e.printStackTrace(); 
     }*//*catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     }*/ 

    } 

fichier Build.gradel comme ci-dessous.

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.0" 
    defaultConfig { 
     applicationId "app.msupply.com.ideaurben" 
     minSdkVersion 15 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     dexOptions { 
      jumboMode true 
     } 
     packagingOptions { 
      exclude 'META-INF/DEPENDENCIES.txt' 
      exclude 'META-INF/LICENSE.txt' 
      exclude 'META-INF/NOTICE.txt' 
      exclude 'META-INF/NOTICE' 
      exclude 'META-INF/LICENSE' 
      exclude 'META-INF/DEPENDENCIES' 
      exclude 'META-INF/notice.txt' 
      exclude 'META-INF/license.txt' 
      exclude 'META-INF/dependencies.txt' 
      exclude 'META-INF/LGPL2.1' 
     } 

    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:26.+' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.android.support:design:26.+' 
    compile 'com.android.support:support-v4:26.+' 
    compile 'com.squareup.retrofit2:retrofit:2.0.2' 
    compile 'com.squareup.okhttp3:logging-interceptor:3.0.1' 
    compile 'com.android.support:cardview-v7:25.2.0' 
    testCompile 'junit:junit:4.12' 
} 

aidez s'il vous plaît n'importe qui, Merci d'avance.

+0

Vous obtenez cette erreur lorsque la classe est introuvable au moment de l'exécution, assurez-vous de ne pas manquer le fichier poi-ooxml-3-9.jar lors de l'exécution. –

+0

J'ajoute la bibliothèque 'poi-ooxml-3-9.jar' dans mon dossier lib monsieur. – Mariyappan

+0

classeur.close(); Je ne reconnais pas non plus ma classe java monsieur .. J'ai donc commenté cette ligne – Mariyappan

Répondre

0

Je voudrais corriger la perspective des autres sur NoClassDefFoundError.

NoClassDefFoundError peut se produire pour plusieurs raisons comme

  1. ClassNotFoundException - .class pas disponible pour cette classe référencée indépendamment du fait qu'il est disponible au moment de la compilation ou non (i.e. classe de base/enfant).
  2. fichier de classe situé, mais exception soulevée lors de l'initialisation des variables statiques
  3. fichier de classe situé, exception soulevée lors de l'initialisation des blocs statiques

Ce que cela signifie en disant « disponible dans la compilation »?

  • La classe référencée est utilisée dans le code. Ex: Deux classes, A et B (étend A). Si B est référencé directement dans le code, il est disponible au moment de la compilation, à savoir A a = new B();

Ce que cela signifie en disant « non disponible au moment de la compilation »?

  • La classe compilation et la classe d'exécution sont différentes, à savoir par exemple la classe de base est chargé à l'aide classname de classe enfant par exemple Class.forName (« classname ») Par exemple: Deux classes, A et B (étend UNE). Le code a

    A a = Classe.forNom ("B"). NewInstance();

+0

erreur montrant dans cette ligne 'XSSFWorkbook classeur = new XSSFWorkbook();' – Mariyappan