keaukraine
keaukraine

Reputation: 5364

NoClassDefFoundError when accessing inner class from external library

I have an application which uses library, which in its turn has external JAR in it - Cardboard SDK.

App compiles but in runtime I get NoClassDefFoundError - it cannot find inner class CardboardDevice$DeviceParams from cardboard SDK.

Full stack trace:

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)

Library 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')
}

Application 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')
}

Upvotes: 1

Views: 863

Answers (1)

smd
smd

Reputation: 839

The Cardboard SDK includes a libprotobuf jar file. Make sure it is present and being included in your build.

Upvotes: 2

Related Questions