我已经有一个C++服务器,它包含一个将用户插入数据库的服务,当我在控制台上测试时服务工作非常好。Axis客户端gsoap服务器
但事实是,我正在开发一个Java客户端应用程序,它使用Apache Axis使用该服务,但不幸的是它不起作用。我一直在寻找可以帮助我解决这个问题的信息,但我没有看到任何类似的实施。
我的Apache Axis的文件在/ usr/share/java目录,这是我AXIS2_HOME变量的值,这样,才能执行:
java -cp $AXIS2_HOME org.apache.axis.wsdl.WSDL2Java -p CrearAlumno http://localhost/CrearAlumno.wsdl
生成的文件,后来我执行:
javac -cp $AXIS2_HOME *.java
编译我的文件,包括客户端类
//CrearAlumnoClient.java
package CrearAlumno;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
public class CrearAlumnoClient{
public static void main(String[] args)
{
Input in = new Input("asdf", "adgfsdf", "asdg", 453, "asdf", "asdfasdf", "pasdfsd", "asdfsd");
try{
CrearAlumno_Service service = new CrearAlumno_ServiceLocator();
CrearAlumnoPortType port = service.getCrearAlumno();
String response = port.getInfo(in);
}catch(RemoteException e){
e.printStackTrace();
}catch(ServiceException e){
e.printStackTrace();
}
}
}
但是当我excecute:
java CrearAlumno.CrearAlumnoClient
我的应用程序抛出这个错误:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/rpc/ServiceException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: javax.xml.rpc.ServiceException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
我不知道如何解决这个错误,我一直在寻找一个实现,但在这一刻,我没有它。
如果有人能给我看看Axis和gsoap的简单实现,我也会很高兴。
谢谢你的关注:)。