我已經有一個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的簡單實現,我也會很高興。
謝謝你的關注:)。