错误信息
最近在学Android使用KSOAP2调用现有的Webservice的方法,期间在网上找了很多代码,但是每次在Android模拟器中运行的时候程序都会崩溃,搞得自己都快崩溃了。。。。
查看了一下LogCat中的错误报告,发现是因为java.lang.NoClassDefFoundError导致程序崩溃的:
解决方法
找了很多资料,最后才发现是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中,所以运行无误!
THE END!!!!
分享到:
相关推荐
下面将详细讲解如何在Android中使用KSOAP2来调用Webservice接口进行查询操作。 首先,了解SOAP。SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它允许应用程序通过HTTP协议发送和接收数据,...
本文将详细介绍如何在Android应用中使用KSOAP2来调用WebService。 首先,为了在Android项目中使用KSOAP2,你需要下载并添加对应的jar文件。你可以从Google Code仓库...
总之,在Android中使用KSOAP2调用Web Service涉及了构建SOAP请求、设置参数、发送请求以及解析响应等多个环节。理解并熟练掌握这些步骤对于构建与服务器交互的应用至关重要。通过KSOAP2,开发者可以轻松地将Android...
本文将详细介绍如何使用Ksoap2来调用.NET WebService。 1. **理解SOAP**: SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它定义了一种标准的消息结构,允许不同系统之间的应用程序进行通信,...
由于Android SDK自身并未提供专门用于调用WebService的库,所以我们通常会借助第三方库,比如KSOAP2,来实现这一功能。 KSOAP2是一个轻量级的、专门为移动设备设计的库,适用于Android系统。它可以方便地帮助开发者...
- 在需要调用Web Service的类中,导入ksoap2相关的包并编写调用代码。 6. **使用示例** 以下是一个简单的调用Web Service的例子: ```java SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); ...
以下是如何在Android项目中使用KSOAP2的详细步骤: 1. **引入KSOAP2库**: 首先,你需要从官方源或第三方网站(如Google Code仓库)下载KSOAP2的Android版本。将下载的jar文件添加到你的Android项目的lib目录中,...
Android调用webservice所需Ksoap2 jar包
然而,Android SDK本身并未提供直接调用WebService的库,因此开发者通常会依赖第三方库,如KSOAP2,来进行这样的操作。 KSOAP2是一个轻量级的库,特别适合于Android环境,因为它体积小且易于集成。要使用KSOAP2,...
要在Android项目中使用KSOAP2,首先需要将对应的jar包(如ls-kosap.jar)添加到项目的libs目录下,然后在项目的build.gradle文件中将其添加到依赖项,或者通过Eclipse或Android Studio的类路径设置进行添加。...
android中调用webservice:ksoap2.jar
1. **添加依赖**:在你的Android项目中,你需要将ksoap2-android-3.6.4.jar包导入到项目的lib目录下,然后在构建路径中包含这个库。如果是使用Gradle构建系统,可以在build.gradle文件中添加如下依赖: ```gradle ...
总的来说,kSOAP2精简版jar包为Android开发者提供了一个高效且简洁的解决方案,用于在Android应用中调用Web服务,而无需担心与Android系统的兼容性问题。只需将这个jar包导入项目,就可以开始编写与Web服务交互的...
ksoap2-android是一个轻量级的库,专为Android平台设计,用于调用基于SOAP的Web服务。SOAP(Simple Object Access Protocol)是一种用于交换结构化信息的协议,常用于Web服务。在这个教程中,我们将探讨如何使用...
以下是一个详细的步骤和示例代码,说明如何在Android中利用ksoap2调用WebService。 1. **添加ksoap2依赖** 首先,你需要下载ksoap2的jar文件,如`ksoap2-android-assembly-3.6.1-jar-with-dependencies.jar`。将这...
本篇文章将详细探讨如何在Android中利用ksoap2库来调用WebService接口,并通过jar包的方式进行集成。 **ksoap2库介绍** ksoap2是一个轻量级的开源库,专门用于Android平台,它使得Android应用程序能够方便地与基于...
ksoap2-android用于和WebService通信第三方开源库,WebService 是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台,不同语言、不同技术整合到一起