`
longgangbai
  • 浏览: 7340049 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android使用KSOAP2调用WebService及正确导入jar包的问题

 
阅读更多

 

错误信息

    最近在学Android使用KSOAP2调用现有的Webservice的方法,期间在网上找了很多代码,但是每次在Android模拟器中运行的时候程序都会崩溃,搞得自己都快崩溃了。。。。

    查看了一下LogCat中的错误报告,发现是因为java.lang.NoClassDefFoundError导致程序崩溃的:

  1. ERROR/AndroidRuntime(600): java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject    
  2.     at webservice.weather.WeatherActivity.getWeather(WeatherActivity.java:104)    
  3.     at webservice.weather.WeatherActivity.showWeather(WeatherActivity.java:84)    
  4.     at webservice.weather.WeatherActivity.access$0(WeatherActivity.java:80)    
  5.     at webservice.weather.WeatherActivity$1.onClick(WeatherActivity.java:75)    
  6.     at android.view.View.performClick(View.java:2408)    
  7.     at android.view.View$PerformClick.run(View.java:8816)    
  8.     at android.os.Handler.handleCallback(Handler.java:587)    
  9.     at android.os.Handler.dispatchMessage(Handler.java:92)    
  10.     at android.os.Looper.loop(Looper.java:123)    
  11.     at android.app.ActivityThread.main(ActivityThread.java:4627)    
  12.     at java.lang.reflect.Method.invokeNative(Native Method)    
  13.     at java.lang.reflect.Method.invoke(Method.java:521)    
  14.     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)    
  15.     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)    
  16.     at dalvik.system.NativeStart.main(Native Method)  

 

解决方法

找了很多资料,最后才发现是jar包的导入有问题。。。。以前开发java程序时导入jar包都是用一下的方法:

    工程点击右键->Build Path->Add Libraries->User Library->选择包含需要的jar包的Library(如果没有的话就点击User Libraries新建一个Library,然后再选中)

但是,在Android中这样导入jar包会导致程序在模拟器中运行时抛出java.lang.NoClassDefFoundError异常,在Android中导入jar包的步骤如下:

      工程点击右键->Build Path->Add External Archives->选择要导入的jar包

另外还有一个问题就是:Android模拟器访问Tomcat上部署的webservice程序时,不能用localhost或者本机IP,Android默认访问本机地址为10.0.2.2。

原因猜想

    对于产生上述NoClassDefFoundError的原因,查看一下工程中的classpath文件就可以找到。如果是利用第一种方法导入的jar包的话,classpath文件中会生成这样一条语句:<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/KSOAP2"/>,这种导入jar包的方法依赖于开发环境eclipse;而如果用第二种方法导入jar包的话,会在classpath中产生如下的语句:

<classpathentry kind="lib" path="D:/JAVATOOLS/ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar"/>,这种导入方式是用的绝对路径,与eclipse开发环境无关,而且以这种方式导入后,jar包的信息会被加到工程class.dex中,进而会被打包到apk中。

    我猜想,在运行虚拟机的时候,虚拟机是脱离了eclipse开发环境的,所以第一种依赖于eclipse环境的导入方式会出现上述错误;而第二种导入方式由于不依靠eclipse,将jar包的信息放到了class.dex中,所以运行无误!

分享到:
评论

相关推荐

    android用ksoap2调用webservice接口查询

    下面将详细讲解如何在Android中使用KSOAP2来调用Webservice接口进行查询操作。 首先,了解SOAP。SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它允许应用程序通过HTTP协议发送和接收数据,...

    使用KSOAP2调用WebService

    本文将详细介绍如何在Android应用中使用KSOAP2来调用WebService。 首先,为了在Android项目中使用KSOAP2,你需要下载并添加对应的jar文件。你可以从Google Code仓库...

    在android中使用KSOAP2调用webservice

    总之,在Android中使用KSOAP2调用Web Service涉及了构建SOAP请求、设置参数、发送请求以及解析响应等多个环节。理解并熟练掌握这些步骤对于构建与服务器交互的应用至关重要。通过KSOAP2,开发者可以轻松地将Android...

    Android调用Webservice使用的ksoap2包

    本文将详细介绍如何使用Ksoap2来调用.NET WebService。 1. **理解SOAP**: SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它定义了一种标准的消息结构,允许不同系统之间的应用程序进行通信,...

    ksoap2完整版jar包 Android调用webservice

    - 在需要调用Web Service的类中,导入ksoap2相关的包并编写调用代码。 6. **使用示例** 以下是一个简单的调用Web Service的例子: ```java SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); ...

    android开发--使用ksoap2调用webservice借鉴.pdf

    由于Android SDK自身并未提供专门用于调用WebService的库,所以我们通常会借助第三方库,比如KSOAP2,来实现这一功能。 KSOAP2是一个轻量级的、专门为移动设备设计的库,适用于Android系统。它可以方便地帮助开发者...

    android开发--使用ksoap2调用webservice.pdf

    以下是如何在Android项目中使用KSOAP2的详细步骤: 1. **引入KSOAP2库**: 首先,你需要从官方源或第三方网站(如Google Code仓库)下载KSOAP2的Android版本。将下载的jar文件添加到你的Android项目的lib目录中,...

    Android调用webservice所需Ksoap2 jar包

    Android调用webservice所需Ksoap2 jar包

    android开发--使用ksoap2调用webservice[借鉴].pdf

    然而,Android SDK本身并未提供直接调用WebService的库,因此开发者通常会依赖第三方库,如KSOAP2,来进行这样的操作。 KSOAP2是一个轻量级的库,特别适合于Android环境,因为它体积小且易于集成。要使用KSOAP2,...

    android ksoap2 3.6 webservice专用

    要在Android项目中使用KSOAP2,首先需要将对应的jar包(如ls-kosap.jar)添加到项目的libs目录下,然后在项目的build.gradle文件中将其添加到依赖项,或者通过Eclipse或Android Studio的类路径设置进行添加。...

    android调用webservice jar包

    android中调用webservice:ksoap2.jar

    ksoap2-android-3.6.4.zip

    1. **添加依赖**:在你的Android项目中,你需要将ksoap2-android-3.6.4.jar包导入到项目的lib目录下,然后在构建路径中包含这个库。如果是使用Gradle构建系统,可以在build.gradle文件中添加如下依赖: ```gradle ...

    ksoap2 精简版jar包

    总的来说,kSOAP2精简版jar包为Android开发者提供了一个高效且简洁的解决方案,用于在Android应用中调用Web服务,而无需担心与Android系统的兼容性问题。只需将这个jar包导入项目,就可以开始编写与Web服务交互的...

    Android中ksoap2-android调用WebService 实现天气预报

    ksoap2-android是一个轻量级的库,专为Android平台设计,用于调用基于SOAP的Web服务。SOAP(Simple Object Access Protocol)是一种用于交换结构化信息的协议,常用于Web服务。在这个教程中,我们将探讨如何使用...

    Android 中利用 ksoap2 调用 WebService的示例代码

    以下是一个详细的步骤和示例代码,说明如何在Android中利用ksoap2调用WebService。 1. **添加ksoap2依赖** 首先,你需要下载ksoap2的jar文件,如`ksoap2-android-assembly-3.6.1-jar-with-dependencies.jar`。将这...

    WebService_ksoap2_jar

    本篇文章将详细探讨如何在Android中利用ksoap2库来调用WebService接口,并通过jar包的方式进行集成。 **ksoap2库介绍** ksoap2是一个轻量级的开源库,专门用于Android平台,它使得Android应用程序能够方便地与基于...

    ksoap2-android-assembly-3.6.2-jar 下载

    在Android平台调用Web Service需要依赖于第三方类库ksoap2,它是一个SOAP Web service客户端开发包。此jar包用于android和webservice进行通信,目前版本3.6.2

Global site tag (gtag.js) - Google Analytics