zoukankan      html  css  js  c++  java
  • 对象逆序列化报错:java.lang.ClassNotFoundException

    一个bug接受到的数据总是说类找不到。

    我细致看了序列化实现了类名同样都同样
    然后在服务端接收对象时候总报这个做,网上搜了一大堆最后发现了原来是包名不一样,导致了两个类不一样 了
    程序真是个也严密的东西啊
    贴代码给大家看看把

    java.lang.ClassNotFoundException: xxxxxxxxxxxx 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:622) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369) 
    at xxxxxxxxxxxxxxxxx(TestMetadata.java:103) 

    提示类找不到,但实际上类文件是确确实实存在的,那就上网搜。果然找到答案。

    能够參考文章:  http://www.javapractices.com/topic/TopicAction.do?Id=45

    最主要的两点:

    1) 须要相同的包名

    2) 相同的序列化ID



    package testServerAndClient;




    import java.io.IOException;  
    import java.io.ObjectOutput;  
    import java.io.ObjectOutputStream;  
    import java.net.Socket;  
    import java.net.UnknownHostException;  
      


    public class client {  
    /** 
     * 欢迎大家使用这个源代码 如有疑问请加qq群:151648295 
     *  
     */  
        /** 
         * @param args 
         */  
        public static void main(String[] args) {  
            // TODO Auto-generated method stub  
       new client();  
        }  
         
        public client(){  
            try {  
                Socket s=new Socket("127.0.0.1",9999);  
                ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream());  
                User u=new User();  
                u.setName("xiangqiao123");  
                u.setPass("123");  
                oos.writeObject(u);  
                  
            } catch (Exception e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
              
              
        }  
    }  




    package testServerAndClient;


    import java.io.IOException;  
    import java.io.ObjectInputStream;  
    import java.net.ServerSocket;  
    import java.net.Socket;  


    public class Server {  
      
      
        public static void main(String[] args) {  
          
        new Server();  
        }  
        public Server(){  
              
            try {  
                ServerSocket ss=new ServerSocket(9999);  
                Socket s=ss.accept();  
                  
                 ObjectInputStream ois= new ObjectInputStream(s.getInputStream());  
                 User user=(User)ois.readObject();  
                  
                System.out.println(user);  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
              
        }  
      
    }   




    package testServerAndClient;


    import java.io.Serializable;  


    public class User implements Serializable {  




    private String name;  
    private String pass;  


    public String getName() {  
    return name;  
    }  
    public void setName(String name) {  
    this.name = name;  
    }  
    public String getPass() {  
    return pass;  
    }  
    public void setPass(String pass) {  
    this.pass = pass;  
    }  


    }  

  • 相关阅读:
    java map使用比较
    mysql无法启动问题 Found option without preceding group in config file
    B站freecoder的计算机基础讲解
    周问题记录
    使用baksmali及smali修改apk并打包
    安卓APP动态调试-IDA实用攻略
    IDA远程调试 在内存中dump Dex文件
    关于ARM的B,BL跳转指令
    IDA 远程调试 Android so
    IDA远程调试so库JNI_Onload函数
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7260080.html
Copyright © 2011-2022 走看看