ObjectInputStream readObject(): ClassNotFoundException

前端 未结 2 1273
醉话见心
醉话见心 2021-01-20 03:20

In both client and server classes, I have an exact same inner class called Data. This Data object is being sent from the server using:

ObjectOutputStream out         


        
相关标签:
2条回答
  • 2021-01-20 03:51

    What you were trying to do is something along the lines of the following:

    class TCPServer {
        /* some code */
    
        class Data {
    
        }
    }
    
    class TCPClient {
        /* some code */
    
        class Data {
    
        }
    }
    

    Then you are serializing a TCPServer$Data and trying to unserialize it as a TCPClient$Data. Instead you are going to want to be doing this:

    class TCPServer {
        /* some code */
    
    }
    
    class TCPClient {
        /* some code */
    
    }
    
    class Data {
        /* some code */
    
    }
    

    Then make sure the Data class is available to both the client and the server programs.

    0 讨论(0)
  • 2021-01-20 03:56

    When you use some class in two different JVMs, and you are marshalling/unmarshalling the class then the class should be exported to a common library and shared between both server and client. Having different class wont work any time.

    What you are trying to do is marshall TCPServer$Data and unmarshall as TCPClient$Data. That is incompatible.

    0 讨论(0)
提交回复
热议问题