我已经有一个包含将用户插入数据库的服务的C服务器,当我在控制台上测试它时服务工作很棒 .
但事实是我正在开发一个使用Apache Axis服务的Java客户端应用程序,遗憾的是它不起作用 . 我一直在寻找可以帮助我解决这个问题的信息,但我没有看到任何类似的实现 .
我的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();
}
}
}
但是当我执行时:
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的简单实现,我也会很高兴 .
感谢您的关注 :) .
1 回答
这看起来像是没有正确设置类路径的简单情况 .
这里有关于该特定主题的信息:http://axis.apache.org/axis/java/install.html#Classpath_setup
您需要确保包含
javax.xml.rpc.ServiceException
的jar文件存在 .我看到你正在使用
-cp $AXIS2_HOME
设置你的类路径,这将无法正常工作 . 充其量,如果你的 jar 在$AXIS2_HOME
那么你需要做$AXIS2_HOME/*.jar
但是你可能需要更多的东西:然后调用您的应用程序:
关于Axis和Gsoap之间的集成,它确实应该非常简单 . 实际上不应该有任何特殊的干预措施,因为你在java和c世界之间穿越 - 至少对于简单的用例 .