I tried to serialize an 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();
}
}
also tried
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();
}
}
I red that ArrayList is serializable on a lot of sites and also on the documentation of ArrayList as it is a primitive but i still get this exception:
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 tried also to make that class serializable
public class Utente implements Serializable
and also the class contained in that class
public class Character implements Serializable
even if there should be no relation.
I also need to read the file and and allocate it to utenti, it gives the same exception so theoretically by finding a solution to solve the write method it should also work for read method.
The final file has extension .ser, tried with .bin but same thing.
I also tried to write and read an empty ( new ArrayList() ) and like so it gives no exception, only when there are elements in the ArrayList and it is not empty.