新手关于调用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相关