2015-08-07 3 views
0

Недавно я перенес проект Android из Eclipse ADT в Android Studio, это было немного сложно, проект использует RoboSpice (1.4.6) и работает в Android API 22, но когда я пытаюсь запустить его на реальном (Android API 14), он генерирует исключение NoClassDefFoundError. Вот мой стек:NoClassDefFoundError на RoboSpice

08-07 18:14:13.392 31254-31254/com.mypackage.myApp E/dalvikvm﹕ Could not find class 'com.octo.android.robospice.priority.PriorityFuture', referenced from method com.octo.android.robospice.priority.PriorityThreadPoolExecutor.newTaskFor 
08-07 18:14:13.393 31254-31254/com.mypackage.myApp E/dalvikvm﹕ Could not find class 'com.octo.android.robospice.priority.PausablePriorityBlockingQueue', referenced from method com.octo.android.robospice.priority.PausableThreadPoolExecutor.<init> 
08-07 18:14:13.394 31254-31254/com.mypackage.myApp E/dalvikvm﹕ Could not find class 'com.octo.android.robospice.priority.PausablePriorityBlockingQueue', referenced from method com.octo.android.robospice.priority.PausableThreadPoolExecutor.<init> 
08-07 18:14:13.394 31254-31254/com.mypackage.myApp E/dalvikvm﹕ Could not find class 'com.octo.android.robospice.priority.PausablePriorityBlockingQueue', referenced from method com.octo.android.robospice.priority.PausableThreadPoolExecutor.pause 
08-07 18:14:13.394 31254-31254/com.mypackage.myApp E/dalvikvm﹕ Could not find class 'com.octo.android.robospice.priority.PausablePriorityBlockingQueue', referenced from method com.octo.android.robospice.priority.PausableThreadPoolExecutor.resume 
08-07 18:14:13.396 31254-31254/com.mypackage.myApp E/AndroidRuntime﹕ FATAL EXCEPTION: main 
java.lang.NoClassDefFoundError: com.octo.android.robospice.priority.PausablePriorityBlockingQueue 
     at com.octo.android.robospice.priority.PausableThreadPoolExecutor.<init>(PausableThreadPoolExecutor.java:25) 
     at com.octo.android.robospice.priority.PriorityThreadPoolExecutor.<init>(PriorityThreadPoolExecutor.java:23) 
     at com.octo.android.robospice.priority.PriorityThreadPoolExecutor.getPriorityExecutor(PriorityThreadPoolExecutor.java:35) 
     at com.octo.android.robospice.SpiceService.getExecutorService(SpiceService.java:191) 
     at com.octo.android.robospice.SpiceService.onCreate(SpiceService.java:107) 
     at com.octo.android.robospice.SpringAndroidSpiceService.onCreate(SpringAndroidSpiceService.java:25) 
     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2504) 
     at android.app.ActivityThread.access$1600(ActivityThread.java:149) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1382) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:153) 
     at android.app.ActivityThread.main(ActivityThread.java:4987) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 
     at dalvik.system.NativeStart.main(Native Method) 

Я думаю, что нужна дополнительная зависимость баночку я искал много в Интернете, но, надеюсь, что вы можете мне помочь.

EDIT: 11/Август/15

Корень Gradle

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.2.3' 
    } 
} 

Модуль Gradle: Я пробовал только банки (компилирования дерево файлов и один за другим) и через Maven репо.

apply plugin: 'com.android.application' 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    /*compile files('libs/android-support-v4.jar') 
       compile files('libs/robospice-1.4.6.jar') 
       compile files('libs/robospice-cache-1.4.6.jar') 
       compile files('libs/spring-android-core-1.0.1.RELEASE.jar') 
       compile files('libs/spring-android-rest-template-1.0.1.RELEASE.jar') 
       compile files('libs/robospice-spring-android-1.4.6.jar') 
       compile files('libs/itextg-5.4.4.jar') 
       compile files('libs/mpandroidchartlibrary-1-7-0.jar') 
       compile files('libs/commons-lang3-3.1.jar') 
       compile files('libs/jackson-mapper-asl-1.9.11.jar') 
       compile files('libs/jackson-core-asl-1.9.11.jar') 
       compile files('libs/gson-2.3.jar') 
       compile files('libs/core-2.3.0.jar') 
       compile files('libs/ksoap2-android-assembly-3.3.0-jar-with-dependencies.jar')*/ 
    //compile 'com.octo.android.robospice:robospice:1.4.14' 
    compile project(':module1') 
    compile project(':module2') 
    compile project(':module3') 
    compile project(':module4') 
    compile project(':module5') 
    compile project(':module6') 
} 

android { 
    compileSdkVersion 14 
    buildToolsVersion '22.0.1' 
    defaultConfig { 
     // Enabling multidex support. 
     multiDexEnabled 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' 
     exclude 'META-INF/ASL2.0' 
    } 
    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 
     // Move the tests to tests/java, tests/res, etc... 
     instrumentTest.setRoot('tests') 

     // Move the build types to build-types/<type> 
     // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... 
     // This moves them out of them default location under src/<type>/... which would 
     // conflict with src/ being used by the main source set. 
     // Adding new build types or product flavors should be accompanied 
     // by a similar customization. 
     debug.setRoot('build-types/debug') 
     release.setRoot('build-types/release') 
    } 
    productFlavors { 
    } 
} 
+0

Почему бы не использовать Gradle, который поддерживает зависимости Maven от хранилища? – nekojsi

+0

Когда я пытаюсь загрузить хранилище SpiceRobot он бросает меня 'Ошибка: (18, 13) Не удалось решить: com.octo.android.robospice: robospice: 1.4.14 Show in File
Show in Project Structure dialog' Я Newby в Android – LaloMR

+0

Могли бы вы разместить содержимое ваших файлов 'build.gradle', то? Было бы полезно, если бы у нас были как корневые, так и прикладные. – nekojsi

ответ

0

Вы используете robospice-1.4.6.jar в комментировал части банок, и вполне возможно, что эта версия не содержит класс, который вы получаете ошибки о. Из-за первой строки зависимостей compile fileTree(dir: 'libs', include: ['*.jar']) каждый файл jar в вашем каталоге libs будет включен в путь к классам.

Я хотел бы предложить с учетом Maven только зависимости управления, удаляя все банки, связанные с RoboSpice от вашего libs директории и включая только расширение RoboSpice, что вы на самом деле использовать (кажется, что это будет 'com.octo.android.robospice:robospice-spring-android:1.4.14' для вашего случая).

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