对象序列化不起作用

时间:2013-04-08 15:43:55

标签: java serialization bukkit

除了保存和/或加载数据外,它还能完成所需的一切。我假设问题是加载,即使try / catch没有异常。这些文件是由插件创建的,但它不会加载在关闭时应该保存的数据......

可在此处找到完整的课程:http://pastebin.com/pK3NCPfM

加载方法:

    public void getClans(){
        try { 
            // Load the Clans
            FileInputStream f_in = new FileInputStream("Clans.data");
            ObjectInputStream obj_in = new ObjectInputStream (f_in);
            @SuppressWarnings("unchecked")
            HashMap<String, Clan> Clans = (HashMap<String, Clan>) obj_in.readObject();
            obj_in.close();
            getLogger().info("Clans successfully loaded");
            } catch (Exception e) {
            getLogger().info("Error loading clan files...");
            getLogger().info(e.getMessage());
            } 
    }

    public void getPlayers(){
        try { 
            // Load the players that are in a clan
            FileInputStream f_in = new FileInputStream("clanPlayers.data");
            ObjectInputStream obj_in = new ObjectInputStream (f_in);
            @SuppressWarnings("unchecked")
            HashMap<String, String> clanPlayers = (HashMap<String, String>) obj_in.readObject();
            obj_in.close();
            getLogger().info("clanPlayers successfully loaded");
            } catch (Exception e) {
            getLogger().info("Error loading clanPlayer files...");
            getLogger().info(e.getMessage());
            } 
    }

更新: 我不确定为什么这不起作用。如果有人能帮我解决问题,我应该好好去!

    public void getPlayers(){
        try { 
            // Load the players that are in a clan
            FileInputStream f_in = new FileInputStream("clanPlayers.data");
            ObjectInputStream obj_in = new ObjectInputStream (f_in);
            @SuppressWarnings("unchecked")
            clanPlayers = (HashMap<String, String>) obj_in.readObject(); // Error on this line. 
            //I want the HashTable ClanPlayers to be a copy of the object that was saved
            obj_in.close();
            getLogger().info("clanPlayers successfully loaded");
            } catch (Exception e) {
            getLogger().info("Error loading clanPlayer files...");
            getLogger().info(e.getMessage());
            } 
    }

1 个答案:

答案 0 :(得分:3)

这些方法不返回任何内容,也不初始化任何字段:只有局部变量。所以它们基本上是复杂的noops。

另外,你不应该使用cath Exception。仅当您可以在此处真正处理异常时才捕获IOException。其他方面,让异常传播,或将其转换为runeim异常并抛出运行时异常。