2015-02-01 3 views
0

Я пытаюсь использовать CSVReader в то время как я получаю ошибку java.lang.NoClassDefFoundErrorандроид студия: java.lang.NoClassDefFoundError

В проекте, я поставил opencsv-3.2.jar в эти библиотеки папки
и в Gradle,

compile files ('libs/opencsv-3.2.jar') 

добавляются в зависимости

Для моего файла CSV, он помещается в SRC/главная/assests/data.csv

в моем коде:

AssetManager assetManager = context.getAssets(); 
     try { 
      InputStream csvStream = assetManager.open("data.csv"); 
      InputStreamReader csvStreamReader = new InputStreamReader(csvStream); 
      CSVReader csvReader = new CSVReader(csvStreamReader); 
      String [] nextLine; 
      Log.d("test","reading csv"); 

      // error in following sentence 
      while ((nextLine = csvReader.readNext()) != null) { 
       // nextLine[] is an array of values from the line 
       Log.d("test",nextLine.toString() + "etc..."); 
       break; 
      } 


     } catch (FileNotFoundException e) { 
      Log.d("test","fail read csv"); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      Log.d("test","io exception csv"); 
      e.printStackTrace(); 
     }` 

Исключение:

02-01 15:59:57.587 2271-2271/com.example.brian.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: main 
     Process: com.example.brian.myapp, PID: 2271 
     java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/lang3/StringUtils; 
       at com.opencsv.CSVParser.isAllWhiteSpace(CSVParser.java:478) 
       at com.opencsv.CSVParser.parseLine(CSVParser.java:338) 
       at com.opencsv.CSVParser.parseLineMulti(CSVParser.java:270) 
       at com.opencsv.CSVReader.readNext(CSVReader.java:226) 
       at com.example.brian.myapplication.HandbookDatabase.readAndInsertData(HandbookDatabase.java:57) 
       at com.example.brian.myapplication.HandbookDatabase.<init>(HandbookDatabase.java:40) 
       at com.example.brian.myapplication.MainActivity.onCreate(MainActivity.java:50) 
       at android.app.Activity.performCreate(Activity.java:5933) 
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
       at android.app.ActivityThread.access$800(ActivityThread.java:144) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:135) 
       at android.app.ActivityThread.main(ActivityThread.java:5221) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at java.lang.reflect.Method.invoke(Method.java:372) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.lang3.StringUtils" on path: DexPathList[[zip file "/data/app/com.example.brian.myapp-2/base.apk"],nativeLibraryDirectories=[/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 com.opencsv.CSVParser.isAllWhiteSpace(CSVParser.java:478) 
                at com.opencsv.CSVParser.parseLine(CSVParser.java:338) 
                at com.opencsv.CSVParser.parseLineMulti(CSVParser.java:270) 
                at com.opencsv.CSVReader.readNext(CSVReader.java:226) 
                at com.example.brian.myapplication.HandbookDatabase.readAndInsertData(HandbookDatabase.java:57) 
                at com.example.brian.myapplication.HandbookDatabase.<init>(HandbookDatabase.java:40) 
                at com.example.brian.myapplication.MainActivity.onCreate(MainActivity.java:50) 
                at android.app.Activity.performCreate(Activity.java:5933) 
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                at android.os.Handler.dispatchMessage(Handler.java:102) 
                at android.os.Looper.loop(Looper.java:135) 
                at android.app.ActivityThread.main(ActivityThread.java:5221) 
                at java.lang.reflect.Method.invoke(Native Method) 
                at java.lang.reflect.Method.invoke(Method.java:372) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
     Suppressed: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils 
       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) 
       ... 21 more 
     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

ответ

6

Вам нужно добавить commons-lang3 в зависимости.

'org.apache.commons:commons-lang3:3.0' 

который содержит Недостающую класс org/apache/commons/lang3/StringUtils

+0

работает для меня, спасибо! –

Смежные вопросы