코드에 두 개의 배열 목록이 있습니다. 하나는 사용자 객체를 저장하고, 다른 하나는 팀 객체를 저장합니다. 내가하려고하는 것은 close 명령어가 두 배열리스트를 파일에 저장 한 다음 프로그램을 닫을 때이다.커스텀 객체 직렬화의 Arraylist
둘 다 AL을 절약하는 데 문제가 있었지만 serialVersionUID를 정의하고 사용자 AL 만 제대로 정의했습니다. 팀 AL의 오류가 발생했습니다.
오류 절약 :
14:29:46 [SEVERE] java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.bukkit.Location
14:29:46 [SEVERE] at java.io.ObjectInputStream.readObject0(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectInputStream.readSerialData(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectInputStream.readObject0(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectInputStream.readObject(Unknown Source)
14:29:46 [SEVERE] at java.util.ArrayList.readObject(Unknown Source)
14:29:46 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:29:46 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
14:29:46 [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
14:29:46 [SEVERE] at java.lang.reflect.Method.invoke(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectInputStream.readSerialData(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectInputStream.readObject0(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectInputStream.readObject(Unknown Source)
14:29:46 [SEVERE] at plugin.Configs.loadTeams(Configs.java:129)
14:29:46 [SEVERE] at plugin.UltimateSurvival.onEnable(UltimateSurvival.java:82)
14:29:46 [SEVERE] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
14:29:46 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
14:29:46 [SEVERE] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
14:29:46 [SEVERE] at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.java:284)
14:29:46 [SEVERE] at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.java:266)
14:29:46 [SEVERE] at org.bukkit.craftbukkit.v1_6_R3.CraftServer.reload(CraftServer.java:615)
14:29:46 [SEVERE] at org.bukkit.Bukkit.reload(Bukkit.java:277)
14:29:46 [SEVERE] at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23)
14:29:46 [SEVERE] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192)
14:29:46 [SEVERE] at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchCommand(CraftServer.java:528)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.PlayerConnection.handleCommand(PlayerConnection.java:968)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.PlayerConnection.chat(PlayerConnection.java:886)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:837)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.Packet3Chat.handle(SourceFile:49)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.NetworkManager.b(NetworkManager.java:296)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:116)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.DedicatedServerConnection.b(SourceFile:30)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:592)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:227)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:488)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:421)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
14:29:46 [SEVERE] Caused by: java.io.NotSerializableException: org.bukkit.Location
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject0(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject0(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject(Unknown Source)
14:29:46 [SEVERE] at java.util.ArrayList.writeObject(Unknown Source)
14:29:46 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:29:46 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
14:29:46 [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
14:29:46 [SEVERE] at java.lang.reflect.Method.invoke(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject0(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject(Unknown Source)
14:29:46 [SEVERE] at plugin.Configs.saveTeams(Configs.java:52)
14:29:46 [SEVERE] at plugin.UltimateSurvival.onDisable(UltimateSurvival.java:91)
14:29:46 [SEVERE] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:219)
14:29:46 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:481)
14:29:46 [SEVERE] at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:400)
14:29:46 [SEVERE] at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:393)
14:29:46 [SEVERE] at org.bukkit.plugin.SimplePluginManager.clearPlugins(SimplePluginManager.java:434)
14:29:46 [SEVERE] at org.bukkit.craftbukkit.v1_6_R3.CraftServer.reload(CraftServer.java:585)
14:29:46 [SEVERE] ... 17 more
오류로드 :
14:29:46 [SEVERE] java.io.NotSerializableException: org.bukkit.Location
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject0(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject0(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject(Unknown Source)
14:29:46 [SEVERE] at java.util.ArrayList.writeObject(Unknown Source)
14:29:46 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:29:46 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
14:29:46 [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
14:29:46 [SEVERE] at java.lang.reflect.Method.invoke(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject0(Unknown Source)
14:29:46 [SEVERE] at java.io.ObjectOutputStream.writeObject(Unknown Source)
14:29:46 [SEVERE] at plugin.Configs.saveTeams(Configs.java:52)
14:29:46 [SEVERE] at plugin.UltimateSurvival.onDisable(UltimateSurvival.java:91)
14:29:46 [SEVERE] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:219)
14:29:46 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:481)
14:29:46 [SEVERE] at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:400)
14:29:46 [SEVERE] at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:393)
14:29:46 [SEVERE] at org.bukkit.plugin.SimplePluginManager.clearPlugins(SimplePluginManager.java:434)
14:29:46 [SEVERE] at org.bukkit.craftbukkit.v1_6_R3.CraftServer.reload(CraftServer.java:585)
14:29:46 [SEVERE] at org.bukkit.Bukkit.reload(Bukkit.java:277)
14:29:46 [SEVERE] at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23)
14:29:46 [SEVERE] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192)
14:29:46 [SEVERE] at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchCommand(CraftServer.java:528)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.PlayerConnection.handleCommand(PlayerConnection.java:96
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.PlayerConnection.chat(PlayerConnection.java:886)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:837)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.Packet3Chat.handle(SourceFile:49)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.NetworkManager.b(NetworkManager.java:296)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:116)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.DedicatedServerConnection.b(SourceFile:30)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:592)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:227)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:488)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:421)
14:29:46 [SEVERE] at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
이것은 내가 현재 개발 오전 마인 크래프트 플러그인의 일부입니다. 일부 코드 :
public class Team implements Serializable
{
private static final long serialVersionUID = 6482400621090209853L;
private String name = "";
private int points = 0;
private int size = 0;
private Location spawn = null;
}
public void loadTeams()
{
try{
FileInputStream file = new FileInputStream ("plugins/UltimateSurvival/teams.bin");
ObjectInputStream ois = new ObjectInputStream(file);
UltimateSurvival.teams = (ArrayList<Team>)ois.readObject();
file.close();
}catch(Exception e){
e.printStackTrace();
}
}
public void saveTeams()
{
try
{
FileOutputStream file = new FileOutputStream ("plugins/UltimateSurvival/teams.bin");
ObjectOutputStream oos = new ObjectOutputStream(file);
oos.writeObject(UltimateSurvival.teams);
file.close();
}
catch(Exception e)
{
e.printStackTrace();
}
나는 직렬화에 대해 조금 읽었지만, 그것은 내 첫 접촉이다. 내가 뭔가 잘못하고 있는거야? 사전에
덕분에
당신이 어떤 오류를받을 수 있나요? 스크린 샷에 대한 링크를 게시하는 대신 전체 스택 추적을 복사하여 붙여 넣으십시오. –
'Location'은 직렬화 할 수 없습니다. 이것이 말한 것입니다. 그것을 직렬화 할 수 있습니다, 그것은'Team' 객체로부터 참조됩니다 – hoaz
나는 바보 같은 존재입니다 ... 그러나 한가지 문제가 있습니다,이'Location'은 저에게 만들어지지 않았고 bukkit 라이브러리에 속합니다 . 직렬화 할 수있는 방법이 있습니까? –