【问题标题】:Android ksoap2 library throwing NoClassDefFoundError exception on SoapObjectAndroid ksoap2 库在 SoapObject 上引发 NoClassDefFoundError 异常
【发布时间】:2017-02-12 17:12:07
【问题描述】:

关于这个崩溃/错误有很多 SO 问题,但所有这些问题要么与 eclipse 相关,要么对我不起作用。我有一个具有以下依赖项的项目

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

项目 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()
    }
}

我的项目正在运行并且没有任何问题,但是在我将 Android Studio 更新到 2.2 后,此崩溃仅发生在 pre-lollipop 设备上。我不确定这是由于 Android Studio 更新造成的。

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)

实际崩溃的代码是:

 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());

【问题讨论】:

  • 您是否尝试添加 jar 文件?
  • 是的,但同样的问题。

标签: android android-studio android-5.0-lollipop android-ksoap2


【解决方案1】:

试试这个:

     String username = "your username";
     PropertyInfo usernameProp = new PropertyInfo();
     usernameProp.setName("username");
     usernameProp.setValue(username);
     usernameProp.setType(String.class);
     so.addProperty(usernameProp);

【讨论】:

  • PropertyInfo 不是 SoapObject 的替代品。你能分享完整的例子吗
  • 你可以在这个链接看到我的回复stackoverflow.com/questions/39850481/…
  • 我在这一行崩溃了 SoapObject request = new SoapObject(namespace, methodName);这意味着 PropertyInfo 将无效
【解决方案2】:

花了几个小时和回溯代码后,我终于找到了错误的根源。这是一个依赖问题,它是由于依赖冲突而发生的。没有任何消息、日志或错误指向这个方向。我删除了 Glide 并解决了这个问题。现在我正在使用毕加索。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多