penguin penguin - 1 month ago 26
Android Question

Android ksoap2 library throwing NoClassDefFoundError exception on SoapObject

There are number of SO question on this crash/bug, but all of them are either related to eclipse or not working for me. I have a project with following dependencies

repositories {
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
maven { url 'https://maven.fabric.io/public' }
maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases' }
}

dependencies {
compile('com.crashlytics.sdk.android:crashlytics:2.5.7@aar') {
transitive = true;
}
compile('com.squareup.retrofit2:retrofit:2.0.0') {
//exclude web sockets module from okhttp
exclude module: 'okhttp-ws'
exclude module: 'okhttp'
}
configurations {
compile.exclude group: 'org.json', module: 'json'
}
compile files('libs/smack-core-4.1.7.jar')
compile 'com.android.support:cardview-v7:24.2.1'
compile 'com.android.support:recyclerview-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
compile 'com.android.support:support-v4:24.2.1'
compile 'com.android.support:customtabs:24.2.1'
compile 'com.google.guava:guava:18.0'
compile 'com.github.amlcurran.showcaseview:library:5.0.0'
compile 'com.koushikdutta.async:androidasync:2.1.4'
compile 'com.nhaarman.listviewanimations:lib-core:3.1.0'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
compile 'xpp3:xpp3:1.1.4c'
compile 'org.jxmpp:jxmpp-core:0.4.2'
compile 'org.igniterealtime.smack:smack-android-extensions:4.1.7'
compile 'org.igniterealtime.smack:smack-tcp:4.1.7'
compile 'io.realm:android-adapters:1.3.0'
compile 'com.orhanobut:logger:1.15'
compile 'com.github.clans:fab:1.6.4'
compile 'com.wang.avi:library:2.1.3'
compile 'org.jsoup:jsoup:1.9.2'
compile 'com.github.bumptech.glide:glide:3.7.0'
**compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1'**
compile fileTree(include: ['*.jar'], dir: 'libs')
}

configurations {
compile.exclude module: 'smack-core'
compile.exclude module: 'gson'
all*.exclude group: 'xpp3', module: 'xpp3'
}


Project Gradle:

buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:1.2.0"
classpath 'com.android.tools.build:gradle:2.2.0'
classpath 'com.google.gms:google-services:3.0.0'
}
}

allprojects {
repositories {
jcenter()
}
}


My project was working and had no issue but after I updated Android Studio to 2.2 this crash is occurring only on pre-lollipop devices. I am not sure it is caused due to Android Studio update.

Caused by: java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject
at com.webgreeter.livechat.networkcalls.SoapWebServices.checkAndLogin(SoapWebServices.java:256)
at com.webgreeter.livechat.ui.LoginAsyncTask.LoginProcess(LoginAsyncTask.java:84)
at com.webgreeter.livechat.ui.LoginAsyncTask.doInBackground(LoginAsyncTask.java:39)
at com.webgreeter.livechat.ui.LoginAsyncTask.doInBackground(LoginAsyncTask.java:21)
at android.os.AsyncTask$2.call(AsyncTask.java:288)


Actual code where it is crashing is:

String METHOD_NAME = "CheckandLogin";
SoapObject so = new SoapObject(NAMESPACE, METHOD_NAME);
so.addProperty("username", operator.getName());
so.addProperty("password", operator.getPassword());
so.addProperty("licenseKey", operator.getLicenseKey());

Answer

After spending hours and backtracking code, I finally found the source of bug. It was a dependence issue, and it was happening due to conflict in dependencies. There wasn't any message, log or error pointing in this direction. I removed Glide and it fixed the issue. Now I am using Picasso.

compile 'com.github.bumptech.glide:glide:3.7.0'
Comments