当前位置:编程学习 > JAVA >>

新手关于调用webservice的问题

不好意思,我是java新手,我们开发工具是php,我们有用php来做了一个webservice接口,然后用java来调用这个webservice接口,但是调用不成功,后来直接在网上找了一个人家测试成功的例子,也调用不成功,求解。


测试环境,就装了一个java环境,然后用文本编辑器上写这个代码,代码如下:


package TestWebService.webserviceclient;
 
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.rmi.RemoteException;
 import javax.xml.rpc.ParameterMode;
 import javax.xml.rpc.ServiceException;
 import org.apache.axis.client.Call;
 import org.apache.axis.encoding.XMLType;
 
 public class TestWebService {
     /**
      * 通过genClient.bat文件生成的webservice客户端调用webservice服务的步骤如下:
      * 1.创建service对象 
      * 2.创建url对象 
      * 3.创建call对象,
      * 4.调用webservice的方法
 */
     public static void test1() {
         try {
             // 1.创建service对象,通过axis自带的类创建
             org.apache.axis.client.Service service = new org.apache.axis.client.Service();
 
             // 2.创建url对象
             String wsdlUrl = "http://10.10.146.82:8080/esop_dev/services/GroupInfoService?wsdl";//请求服务的URL
             URL url = new URL(wsdlUrl);//通过URL类的构造方法传入wsdlUrl地址创建URL对象
 
 // 2.创建服务方法的调用者对象call,设置call对象的属性
             Call call = (Call) service.createCall();
             call.setTargetEndpointAddress(url);//给call对象设置请求的URL属性
             String serviceName = "groupInfo";
             call.setOperationName(serviceName);//给call对象设置调用方法名属性
             call.addParameter("groupNo", XMLType.XSD_LONG, ParameterMode.IN);// 给call对象设置方法的参数名、参数类型、参数模式
             call.setReturnType(XMLType.SOAP_STRING);// 设置调用方法的返回值类型
 
 //4.通过invoke方法调用webservice
             long groupNo = 2100000014L;
             String res = (String) call.invoke(new Object[] { groupNo });//调用服务方法
             System.out.println(res);
         } catch (MalformedURLException e) {
             e.printStackTrace();
         } catch (ServiceException e) {
             e.printStackTrace();
         } catch (RemoteException e) {
             e.printStackTrace();
         }
     }
 
     public static void main(String[] args) {
         test1();
     }
 
 }


编译运行结果如下:

C:\java>javac TestWebService.java

C:\java>java TestWebService
Exception in thread "main" java.lang.NoClassDefFoundError: TestWebService (wrong
 name: TestWebService/webserviceclient/TestWebService)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:480)



请问是什么错误,应该怎么处理?
--------------------编程问答-------------------- NoClassDefFoundError 缺少包! --------------------编程问答-------------------- 检查下axis下的lib包是否全部导入!至少必需的要导入 --------------------编程问答-------------------- 你的测试类放到package TestWebService.webserviceclient中,好像调用的时候不能直接java XXX的形式执行。
先不要放到package里,编译运行试试。
(没记错的话,这样执行试试:
C:\java>java TestWebService.webserviceclient.TestWebService
不行就别放package里了)
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,