【发布时间】:2019-03-13 16:50:11
【问题描述】:
试图反序列化通过蓝牙从一台安卓设备发送到另一台的对象。
对象大小是 126 字节,我正在接受这个大小。但是我得到了一个找不到类的异常。
反序列化的代码为:
public static EcgDataPoint deserialize(byte[] bytes) throws IOException, ClassNotFoundException {
ByteArrayInputStream b = new ByteArrayInputStream(bytes);
ObjectInputStream o = new ObjectInputStream(b);
return (EcgDataPoint) o.readObject();
}
错误:
tech.abhinavdas.bluetooth D/BluetoothReaderThread: Data type doesn't match
java.lang.ClassNotFoundException: tech.abhinavdas.bluetoothpairingclient.models.EcgDataPoint
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:628)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1615)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1520)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1776)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at tech.abhinavdas.bluetooth.models.EcgDataPoint.deserialize(EcgDataPoint.java:54)
at tech.abhinavdas.bluetooth.threads.BluetoothReaderThread.deserializeAndRead(BluetoothReaderThread.java:47)
at tech.abhinavdas.bluetooth.threads.BluetoothReaderThread.run(BluetoothReaderThread.java:38)
Caused by: java.lang.ClassNotFoundException: Didn't find class "tech.abhinavdas.bluetoothpairingclient.models.EcgDataPoint" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/tech.abhinavdas.bluetooth-EZqoTdreOfJT1jU4xbF9dg==/base.apk"],nativeLibraryDirectories=[/data/app/tech.abhinavdas.bluetooth-EZqoTdreOfJT1jU4xbF9dg==/lib/arm64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:628)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1615)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1520)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1776)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at tech.abhinavdas.bluetooth.models.EcgDataPoint.deserialize(EcgDataPoint.java:54)
at tech.abhinavdas.bluetooth.threads.BluetoothReaderThread.deserializeAndRead(BluetoothReaderThread.java:47)
at tech.abhinavdas.bluetooth.threads.BluetoothReaderThread.run(BluetoothReaderThread.java:38)
我错过了什么?
【问题讨论】:
-
“我错过了什么?” - 类路径中的正确类。找不到。
-
您能详细说明或解释修复方法吗?谢谢!
-
您的 EcgDataPoint 类位于何处?找不到
-
它与试图反序列化它的类在同一个包中。
标签: java android bluetooth deserialization