自己写了一个简单的Java工程,写个一个测试类
String url = "http://192.168.0.89:8080/WebService/services/LoginService";
String namespace = "http://service";
String method = "login";
User user = new User();// 第1步:创建SoapObject对象,并指定WebService的命名空间和调用的方法名
SoapObject request = new SoapObject(namespace, method);
运行出现下列错误:java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Exception in thread "main" 去掉下面那行
SoapObject request = new SoapObject(namespace, method);执行正常
我仔细检查了自己的环境变量和Eclipse中java Compiler的配置都是JDK5,是相同的,网上也查了不少未果。。
自己怀疑是SOAP2的编译使用的JDK版本和自己现在使用的JDK的版本不一致导致的,
知道的兄弟给个回应,谢了???下个JDK高点的版本试试,,下去吃饭了,,,

解决方案 »

  1.   


    这个我也可以肯定,我已经换了高版本的JDK已达到更好的兼容性,应该是SOAP2的编译环境自己JDK的运行环境不能兼容导致的。
      

  2.   

    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;class User {
    private String username;
    private String password;}public class SOAP2Test { public static void main(String[] args) throws Exception {
    String url = "http://192.168.0.89:8080/WebService/services/LoginService";
    String namespace = "http://service";
    String method = "login";
    User user = new User(); SoapObject request = new SoapObject(namespace, method);
                    
                     
                    //1、此处传递的是一字符串,如果将"hello world"改为user对象如何传递,此处报错下面
                    //java.lang.RuntimeException: Cannot serialize: User@1a758cb
                    //2、如果让User实现org.ksoap2.serialization.KvmSerializable接口报错下面:
                    //java.lang.ClassCastException: org.ksoap2.SoapFault cannot be

                    

                      
    request.addProperty("user", "hello world");

    System.out.println(request.getProperty("user")); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
    SoapEnvelope.VER10);
    envelope.bodyOut = request;
    envelope.setOutputSoapObject(request); HttpTransportSE transport = new HttpTransportSE(url);
    transport.debug = true; transport.call(null, envelope);
    Object o = envelope.bodyIn;
    System.out.println("o----" + o.getClass());
    SoapObject soapObject = (SoapObject) envelope.bodyIn; System.out.println(soapObject.getClass()); }}自己传递“helloworld”字符串是没问题的,如果传递User对象就报错,java.lang.RuntimeException: Cannot serialize: User@1a758cb如果让User实现org.ksoap2.serialization.KvmSerializable接口报错下面:
    java.lang.ClassCastException: org.ksoap2.SoapFault cannot be