Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/Java-ClassNotFoundException用于服务器套接字和套接字通信_Java_Android_Sockets_Networking - Fatal编程技术网

Android/Java-ClassNotFoundException用于服务器套接字和套接字通信

Android/Java-ClassNotFoundException用于服务器套接字和套接字通信,java,android,sockets,networking,Java,Android,Sockets,Networking,我正在开发一个应用程序,其中手机(Android程序)是试图通过套接字将数据发送到我计算机上的Java接收器程序的客户端 到目前为止,我已经能够发送简单的字符串或任何东西,但现在我正在尝试发送我创建的自定义对象。我应该注意到,这两个程序都是独立的Eclipse项目,在服务器端包含相同的自定义类“Order”时似乎遇到了问题(即使我在服务器项目的src文件夹中有Order.java) 一些代码,供参考: 服务器: private void run() throws Exception {

我正在开发一个应用程序,其中手机(Android程序)是试图通过套接字将数据发送到我计算机上的Java接收器程序的客户端

到目前为止,我已经能够发送简单的字符串或任何东西,但现在我正在尝试发送我创建的自定义对象。我应该注意到,这两个程序都是独立的Eclipse项目,在服务器端包含相同的自定义类“Order”时似乎遇到了问题(即使我在服务器项目的src文件夹中有Order.java)

一些代码,供参考: 服务器:

private void run() throws Exception {

    ServerSocket mySS = new ServerSocket(4443);     

    while(true) {

        Socket SS_accept = mySS.accept(); 

        InputStream is = SS_accept.getInputStream();  
        ObjectInputStream ois = new ObjectInputStream(is);  
        Order order = (Order) ois.readObject();  

        if (order!=null){
            java.util.List<String> items = order.getOrders(); 
            int chair = order.getChair();
            int table = order.getTable(); 
            double price = order.getPrice(); 
            System.out.println("Table: "+ table + " || Chair: " +chair);
            for(String food: items) {
                System.out.println(food); 
            }
            System.out.println("Price: $"+price); 

        }  
        is.close();  
        SS_accept.close();  
        mySS.close();
知道为什么我在尝试通过套接字发送对象时会出现此错误吗


谢谢。

堆栈跟踪会有所帮助,但几乎可以肯定的是,您在一边序列化对象,然后将其发送到另一边,而另一边没有可用于重构对象的类定义。在本例中,听起来您的服务器可能不知道com.foo.Order类。

您还可以将对象序列化为某种字符串格式(json、yaml、xml)并传递它。我想,维护起来会容易得多。

您可能应该在类中设置,然后用共享类构建一个jar,并将该jar包含在两个项目中


但是,由于您使用的是不同的JVM(Oracle和Dalvik),因此无法保证字节级编码是相同的。您应该使用
readObject
/
writeObject
手动覆盖序列化,或者使用不同的对象编码系统,该系统保证独立于环境而完全相同。

hi。这很奇怪,我不知道该怎么把这个文件包括进去。我将代码复制并粘贴到服务器项目中名为“Order.java”的文件中……服务器和客户机上的代码都在同一个包中吗?该类是否与所有其他服务器类一起编译和部署/运行?
try {
        mySocket = new Socket(serverService.ipAddress, serverService.port);
        os = mySocket.getOutputStream();  
        oos = new ObjectOutputStream(os);  
    } catch(Exception e) {
        Toast.makeText(PlaceOrder.this, "Error - not connected to server.", Toast.LENGTH_SHORT).show(); 
    }

try {
                oos.writeObject(order);
                Toast.makeText(PlaceOrder.this, "Order Submitted!", Toast.LENGTH_SHORT).show(); 
                refreshOrderPage(); //refresh page, allow waiter to make more orders
                oos.close();  
                os.close(); 
                mySocket.close(); 
            } catch (Exception e) {
                Toast.makeText(PlaceOrder.this, "Error - not connected to server.", Toast.LENGTH_SHORT).show();
            }