Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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
Java 使用ObjectInputStream和带有可序列化类的ObjectOutputStream的Android C/S_Java_Android_Sockets_Classnotfoundexception_Objectinputstream - Fatal编程技术网

Java 使用ObjectInputStream和带有可序列化类的ObjectOutputStream的Android C/S

Java 使用ObjectInputStream和带有可序列化类的ObjectOutputStream的Android C/S,java,android,sockets,classnotfoundexception,objectinputstream,Java,Android,Sockets,Classnotfoundexception,Objectinputstream,在桌面上,我有一个使用ObjectInputStream/ObjectOutputStream的多线程客户机/服务器项目,以及一个实现可序列化的类Protocolo。此类用于服务器和客户端。作为一次学习经历,我决定在Android Studio上实现该客户端。我创建了以下异步任务: OpenSocket–OpenSocket扩展异步任务 OpenObjectInputStream–OpenObjectInputStream扩展异步任务 OpenObjectOutputStream–OpenObj

在桌面上,我有一个使用ObjectInputStream/ObjectOutputStream的多线程客户机/服务器项目,以及一个实现可序列化的类Protocolo。此类用于服务器和客户端。作为一次学习经历,我决定在Android Studio上实现该客户端。我创建了以下异步任务:

OpenSocket–
OpenSocket扩展异步任务

OpenObjectInputStream–
OpenObjectInputStream扩展异步任务

OpenObjectOutputStream–
OpenObjectOutputStream扩展异步任务

ReadFromServer-
ReadFromServer扩展异步任务

WriteToServer-
WriteToServer扩展异步任务

在我的主要活动中,我有一个连接按钮的方法:

    public void ligarBtClick(View v) {
    String[] params = new String[]{
            server.getText().toString(),
            port.getText().toString()
    };
    AsyncTask<String, Integer, Socket> openSocket = new OpenSocket().execute(params);
    try {
        socket = openSocket.get();
        if (socket != null) {
            AsyncTask<Socket, Integer, ObjectOutputStream> openObjectOutputStream = new OpenObjectOutputStream(xChange).execute(socket);
            output = openObjectOutputStream.get();
            AsyncTask<Socket, Integer, ObjectInputStream> openObjectInputStream = new OpenObjectInputStream(xChange).execute(socket);
            input = openObjectInputStream.get();
            AsyncTask<ObjectInputStream, Integer, Object> readFromServer = new ReadFromServer(xChange).execute(input);
            msgFromServer = (Protocolo) readFromServer.get();
            fromServer.append("SERVER:\t" + msgFromServer.getType() + ": " + msgFromServer.getMessage() + "\n");
            toServer.requestFocus();
            desligarBt.setEnabled(true);
            ligarBt.setEnabled(false);
            enviarBt.setEnabled(true);
        } else {
            fromServer.append("LOG:\tCould not connect to " + params[0] + ":" + params[1] + "\n");
        }
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }
}
当我运行ReadFromServer时,我的应用程序正在崩溃,更具体地说,当它点击这一行时
msgFromServer=params[0]。readObject()它将崩溃,并显示以下消息:

06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err: java.lang.ClassNotFoundException: Protocolo
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.Class.classForName(Native Method)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.Class.forName(Class.java:251)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:2265)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1641)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:657)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1784)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1985)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1942)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at pt.enta.jdm.tcpclientobject.ReadFromServer.doInBackground(ReadFromServer.java:30)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at pt.enta.jdm.tcpclientobject.ReadFromServer.doInBackground(ReadFromServer.java:14)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:288)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.Thread.run(Thread.java:841)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err: Caused by: java.lang.NoClassDefFoundError: Protocolo
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:    ... 17 more
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err: Caused by: java.lang.ClassNotFoundException: Didn't find class "Protocolo" on path: DexPathList[[zip file "/data/app/pt.enta.jdm.tcpclientobject-6.apk"],nativeLibraryDirectories=[/data/app-lib/pt.enta.jdm.tcpclientobject-6, /vendor/lib, /system/lib]]
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:    ... 17 more
06-20 12:34:08.755 12591-12591/pt.enta.jdm.tcpclientobject D/AndroidRuntime: Shutting down VM
06-20 12:34:08.755 12591-12591/pt.enta.jdm.tcpclientobject W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41f79bc0)
06-20 12:34:08.755 12591-12591/pt.enta.jdm.tcpclientobject E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: pt.enta.jdm.tcpclientobject, PID: 12591
                                                                             java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                                 at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                                 at android.view.View.performClick(View.java:4508)
                                                                                 at android.view.View$PerformClick.run(View.java:18675)
                                                                                 at android.os.Handler.handleCallback(Handler.java:733)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                 at android.os.Looper.loop(Looper.java:136)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5584)
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                                                                                 at dalvik.system.NativeStart.main(Native Method)
                                                                              Caused by: java.lang.reflect.InvocationTargetException
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                 at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                                 at android.view.View.performClick(View.java:4508) 
                                                                                 at android.view.View$PerformClick.run(View.java:18675) 
                                                                                 at android.os.Handler.handleCallback(Handler.java:733) 
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                 at android.os.Looper.loop(Looper.java:136) 
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5584) 
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
                                                                                 at dalvik.system.NativeStart.main(Native Method) 
                                                                              Caused by: java.lang.NullPointerException
                                                                                 at pt.enta.jdm.tcpclientobject.MainActivity.ligarBtClick(MainActivity.java:66)
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                 at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                                 at android.view.View.performClick(View.java:4508) 
                                                                                 at android.view.View$PerformClick.run(View.java:18675) 
                                                                                 at android.os.Handler.handleCallback(Handler.java:733) 
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                 at android.os.Looper.loop(Looper.java:136) 
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5584) 
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
                                                                                 at dalvik.system.NativeStart.main(Native Method) 
它抱怨的类是存在于服务器(而不是客户端)中的类;我在服务器中更改了类的名称,果然它抱怨找不到新名称。我想不出这个


谢谢

找到了解决我自己问题的方法。Protocolo类由服务器和客户端使用。类必须位于客户端和服务器中的同一个包中。我在客户端和服务器中都有这个类,但是(就我而言,这是正常的)在不同的包中


谢谢大家!

找到了解决我自己问题的方法。Protocolo类由服务器和客户端使用。类必须位于客户端和服务器中的同一个包中。我在客户端和服务器中都有这个类,但是(就我而言,这是正常的)在不同的包中


谢谢大家!

该类必须同时存在于发送方和接收方。它既存在于服务器上,也存在于客户端上。否则它将无法编译。这是一个运行时错误。在运行时,该类在服务器和客户端都不存在。该类必须在发送方和接收方都存在。它在服务器和客户端都存在。否则它将无法编译。这是一个运行时错误。它在运行时不存在于服务器和客户端。正如我所说的。它在服务器和客户端都不存在。在两个不同的包中使用相同名称的两个类是两个不同的类,而不是同一个类。我同意!我希望你在最初的答复中更详细一些。无论如何,谢谢你。正如我所说的。它在服务器和客户端都不存在。在两个不同的包中使用相同名称的两个类是两个不同的类,而不是同一个类。我同意!我希望你在最初的答复中更详细一些。无论如何,谢谢你。
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err: java.lang.ClassNotFoundException: Protocolo
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.Class.classForName(Native Method)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.Class.forName(Class.java:251)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:2265)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1641)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:657)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1784)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1985)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1942)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at pt.enta.jdm.tcpclientobject.ReadFromServer.doInBackground(ReadFromServer.java:30)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at pt.enta.jdm.tcpclientobject.ReadFromServer.doInBackground(ReadFromServer.java:14)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:288)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-20 12:34:08.745 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.Thread.run(Thread.java:841)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err: Caused by: java.lang.NoClassDefFoundError: Protocolo
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:    ... 17 more
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err: Caused by: java.lang.ClassNotFoundException: Didn't find class "Protocolo" on path: DexPathList[[zip file "/data/app/pt.enta.jdm.tcpclientobject-6.apk"],nativeLibraryDirectories=[/data/app-lib/pt.enta.jdm.tcpclientobject-6, /vendor/lib, /system/lib]]
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
06-20 12:34:08.755 12591-13006/pt.enta.jdm.tcpclientobject W/System.err:    ... 17 more
06-20 12:34:08.755 12591-12591/pt.enta.jdm.tcpclientobject D/AndroidRuntime: Shutting down VM
06-20 12:34:08.755 12591-12591/pt.enta.jdm.tcpclientobject W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41f79bc0)
06-20 12:34:08.755 12591-12591/pt.enta.jdm.tcpclientobject E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: pt.enta.jdm.tcpclientobject, PID: 12591
                                                                             java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                                 at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                                 at android.view.View.performClick(View.java:4508)
                                                                                 at android.view.View$PerformClick.run(View.java:18675)
                                                                                 at android.os.Handler.handleCallback(Handler.java:733)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                 at android.os.Looper.loop(Looper.java:136)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5584)
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                                                                                 at dalvik.system.NativeStart.main(Native Method)
                                                                              Caused by: java.lang.reflect.InvocationTargetException
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                 at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                                 at android.view.View.performClick(View.java:4508) 
                                                                                 at android.view.View$PerformClick.run(View.java:18675) 
                                                                                 at android.os.Handler.handleCallback(Handler.java:733) 
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                 at android.os.Looper.loop(Looper.java:136) 
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5584) 
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
                                                                                 at dalvik.system.NativeStart.main(Native Method) 
                                                                              Caused by: java.lang.NullPointerException
                                                                                 at pt.enta.jdm.tcpclientobject.MainActivity.ligarBtClick(MainActivity.java:66)
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                 at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                                 at android.view.View.performClick(View.java:4508) 
                                                                                 at android.view.View$PerformClick.run(View.java:18675) 
                                                                                 at android.os.Handler.handleCallback(Handler.java:733) 
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                 at android.os.Looper.loop(Looper.java:136) 
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5584) 
                                                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                 at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
                                                                                 at dalvik.system.NativeStart.main(Native Method)