2015-04-04 132 views
1

我有一個使用庫的應用程序,它依次具有外部JAR - Cardboard SDK。從外部庫訪問內部類時出現NoClassDefFoundError

應用程序編譯但在運行時我得到NoClassDefFoundError - 它無法從Cardboard SDK中找到內部類CardboardDevice$DeviceParams

完整堆棧跟蹤:

java.lang.NoClassDefFoundError: com.google.vrtoolkit.cardboard.proto.CardboardDevice$DeviceParams 
     at com.google.vrtoolkit.cardboard.CardboardDeviceParams.createFromInputStream(CardboardDeviceParams.java:273) 
     at com.google.vrtoolkit.cardboard.HeadMountedDisplayManager.createCardboardDeviceParamsFromExternalStorage(HeadMountedDisplayManager.java:247) 
     at com.google.vrtoolkit.cardboard.HeadMountedDisplayManager.createCardboardDeviceParams(HeadMountedDisplayManager.java:200) 
     at com.google.vrtoolkit.cardboard.HeadMountedDisplayManager.<init>(HeadMountedDisplayManager.java:54) 
     at com.google.vrtoolkit.cardboard.CardboardView.init(CardboardView.java:793) 
     at com.google.vrtoolkit.cardboard.CardboardView.<init>(CardboardView.java:262) 
     at org.androidworks.villagevr.villagevr.BaseVRActivity.onCreate(BaseVRActivity.java:65) 
     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) 

圖書館build.gradle

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "19.1.0" 

    defaultConfig { 
     //applicationId "org.androidworks.vrcommon" 
     minSdkVersion 9 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
} 

dependencies { 
// compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile files('libs/cardboard.jar') 
    compile 'com.android.support:appcompat-v7:21.0.3' 
    compile project(':LiveWallpaperTulipsCommon') 
} 

應用build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "19.1.0" 

    defaultConfig { 
     applicationId "org.androidworks.villagevr.villagevr" 
     minSdkVersion 9 
     targetSdkVersion 21 
     versionCode 15 
     versionName "1.5" 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':LiveWallpaperTulipsCommon') 
    compile project(':LiveWallpaperVillageCommon') 
    compile project(':VRCommon') 
} 
+0

這是一個'debug'或'release'版本,是否給你帶來問題?如果是後者,可能是ProGuard配置問題。 – CommonsWare 2015-04-04 18:15:17

+0

它是調試版本 – keaukraine 2015-04-04 18:18:38

回答

2

的紙板SDK包括libprotobuf jar文件。確保它存在幷包含在您的構建中。

+0

謝謝。我應該首先注意到這一點。事實上,它缺少protobuf庫,但堆棧跟蹤並沒有真正清楚它(該類來自'proto'包) – keaukraine 2015-04-05 07:11:36