问题描述
[size=14px]在MyEclipse8.5中,我新建了一个WebServiceProject项目用xfire框架构建了一个webService并发布成功,并且用VS2008C#可以调用。在MyEclipse新建一个WebProject项目,并导入Xfire的所有库,新建一个带main函数的java类如下所示:packageresourceOntology;importjava.net.URL;importorg.codehaus.xfire.client.Client;publicclassHelloService{publicstaticvoidmain(Stringarg[])throwsException{Clientclient=newClient(newURL("http://localhost:8080/xfire126Demo/services/MyService?wsdl"));Object[]results=client.invoke("SayHello",newObject[]{"许小峰"});System.out.println((String)results[0]);}}直接运行类,可以成功调用,能输出结果,但是当我新建一个jsp页面,并建新一个servlet控制器,在调用webService代码添加到servlet的doPost()方法中,servlet代码如下所示:packageresourceOntology;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.net.MalformedURLException;importjava.io.FileInputStream;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.net.URL;importorg.codehaus.xfire.client.Client;publicclassOntologyServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{this.doPost(request,response);}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException,MalformedURLException{Clientclient;try{client=newClient(newURL("http://localhost:8080/xfire126Demo/services/MyService?wsdl"));Object[]results=client.invoke("SayHello",newObject[]{"许小峰"});System.out.println((String)results[0]);}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}将该jsp页面提交到该servlet控制器,却出现错误:java.lang.NoClassDefFoundError:org/codehaus/xfire/client/Client好像是说:没有找到org/codehaus/xfire/client/Client这个类。我单独的java文件能找到这个类,并能输出结果,但为什么在servlet里就不行呢,我测试用的java类文件和servlet文件在同一个包的同一个目录下,仅仅因为一个是普通java类,另一个是servlet类吗?是不是在jsp控制器servlet中不能调用webService?试了试,好像也不能在jsp页面的小脚本<%%>中调用,可能是我的方法不太对,感觉很奇怪,各位遇到过这个问题没有是如何解决的,反正我知道使用javaScript+ajax是可以调用的。我想在servlet中直接调用,或者是在jsp页面的小脚本<%%>中调用,请各位赐教一下,感激不尽![/size]