ArrayList异常的序列化

我试图序列化一个ArrayList

public void writeonFile(String filePath,ArrayList<Utente> listaUtenti) {
    try {
        ObjectOutputStream writer=new ObjectOutputStream(new FileOutputStream(filePath));
        writer.writeObject(listaUtenti);
        writer.close();
        System.out.println("Ha scritto");
    } catch (FileNotFoundException e) {
        System.out.println("File da scrivere non trovato");
    } catch (IOException e) {
        System.out.println("Problemi di IO nella scrittura");
        e.printStackTrace();
    }
}

也尝试过

public void writeonFile(String filePath,ArrayList listaUtenti) {
    try {
        ObjectOutputStream writer=new ObjectOutputStream(new FileOutputStream(filePath));
        writer.writeObject(listaUtenti);
        writer.close();
        System.out.println("Ha scritto");
    } catch (FileNotFoundException e) {
        System.out.println("File da scrivere non trovato");
    } catch (IOException e) {
        System.out.println("Problemi di IO nella scrittura");
        e.printStackTrace();
    }
}

我认为ArrayList在许多站点上以及在ArrayList的文档上都可以序列化,因为它是原始的,但我仍然遇到此异常:

java.io.NotSerializableException: net.dv8tion.jda.internal.entities.UserImpl
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.writeObject(Unknown Source)
    at java.util.ArrayList.writeObject(Unknown Source)
    at sun.reflect.NativeMethodaccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodaccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodaccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
    at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.writeObject(Unknown Source)
    at stewan.Commands.writeonFile(Commands.java:76)
    at stewan.Commands.onGuildMemberJoin(Commands.java:153)
    at net.dv8tion.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:551)
    at net.dv8tion.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:96)
    at net.dv8tion.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:64)
    at net.dv8tion.jda.internal.JDAImpl.handleEvent(JDAImpl.java:148)
    at net.dv8tion.jda.internal.handle.GuildMemberAddHandler.handleInternally(GuildMemberAddHandler.java:49)
    at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:37)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:839)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:738)
    at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:717)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:877)
    at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:368)
    at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:270)
    at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:990)
    at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:749)
    at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
    at com.neovisionaries.ws.client.ReadingThread.runmain(ReadingThread.java:64)
    at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)

A还试图使该类可序列化 public class Utente implements Serializable

以及该类中包含的类 public class Character implements Serializable

即使没有关系。

我还需要读取文件并将其分配给utenti,它也提供了相同的例外,因此从理论上讲,通过找到解决写方法的解决方案,它也应适用于读方法。

最终文件的扩展名为.ser,尝试使用.bin进行同样的操作。

我还尝试写入和读取一个空的(new ArrayList()),因此只有当ArrayList中有元素并且它不为空时,它不会出现异常。

jjjjcccchhhh 回答:ArrayList异常的序列化

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3084169.html

大家都在问