Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Ошибка при парсинге YAML файла

Discussion in 'Разработка плагинов для новичков' started by Ferrun, Jun 15, 2013.

  1. Автор темы
    Ferrun

    Ferrun Активный участник

    Trophy Points:
    63
    Имя в Minecraft:
    b0mbovix
    Плагин при первом запуске создает файл с конфигурацией и добавляет туда записи:
    Code:
    File conf = new File(getDataFolder(), "config.yml");
            if (!conf.exists()){
                try {
                    conf.createNewFile();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                config = getConfig();
                config.set("server.info", "Server info");
                try {
                    config.save(conf);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (!conf.exists()){
                    buffText.append("[JoinPlugin] [ERROR] Missing 'config.yml'!").append("\n");
                }
            }
    Дело все в том, что при чтении конфигурации из файла, например так:
    Code:
    config = getConfig();
            if (command.getName().equalsIgnoreCase("server")){
                if (args.length > 0){
                    if (args[0].equalsIgnoreCase("info")){
                        sender.sendMessage(config.getString("server.info"));
                        return true;
                    }
                }
            }
    В игре текст выводится успешно, никаких ошибок не возникает, однако в консоли сервера ошибка:
    Code:
    [SEVERE] Cannot load configuration from stream
    org.bukkit.configuration.InvalidConfigurationException: unacceptable character '?' (0xFFFD) special characters are not allowed
    in "<string>", position 159
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:55)
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:138)
        at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:202)
        at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:121)
        at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
        at ru.ferrun.JoinPlugin.onCommand(JoinPlugin.java:65)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
        at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchCommand(CraftServer.java:523)
        at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchServerCommand(CraftServer.java:512)
        at net.minecraft.server.v1_5_R3.DedicatedServer.an(DedicatedServer.java:262)
        at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:227)
        at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
        at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
        at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
    Caused by: unacceptable character '?' (0xFFFD) special characters are not allowed
    in "<string>", position 159
        at org.yaml.snakeyaml.reader.StreamReader.checkPrintable(StreamReader.java:70)
        at org.yaml.snakeyaml.reader.StreamReader.<init>(StreamReader.java:50)
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53)
        ... 14 more
    Смысл ошибки понятен, вот только сам файл не содержит никаких посторонних символов, так собственно в чем проблема? Подскажите, пожалуйста.
     
  2. Хостинг MineCraft
    <
  3. unlimited

    unlimited Старожил Пользователь

    Trophy Points:
    123
    Имя в Minecraft:
    infinity
    Ну во 1, config.yml не надо создавать в коде, он автоматически это сделает.
     
  4. Автор темы
    Ferrun

    Ferrun Активный участник

    Trophy Points:
    63
    Имя в Minecraft:
    b0mbovix
    Спасибо, но я ведь вопрос по другой теме создал, почему бы не ответить именно на него? )
    А файл я и заранее пробовал создавать, а тут это написано уже из-за безысходности, вдруг бы заработало.
     
    Сникерсни likes this.
  5. Shevchik

    Shevchik Старожил Пользователь

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    Кодировку файла упорол, но как?
     
  6. Автор темы
    Ferrun

    Ferrun Активный участник

    Trophy Points:
    63
    Имя в Minecraft:
    b0mbovix
    Да тоже были мысли по кодировке. Но пробовал и пересохранять и просматривать через редакторы с просмотром скрытых символов, все в порядке вроде.

    Сейчас изменил код c:
    Code:
        FileConfiguration config = getConfig();
    На вот такой вот:
    Code:
        final File conf = new File(getDataFolder(), "config.yml");
        final FileConfiguration config = YamlConfiguration.loadConfiguration(conf);
    И собственно ошибка такая больше не появляется.
    Как я понимаю проблема была в моих кривых руках и незнании java? )

    ------

    Минус только в том, что он файл config.yml создает в корне сервера :confused:

    ADD: все, добавляется куда нужно ) Это я не там команду прописал.
     
  7. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Тут как раз таки в Bukkit дело. FileConfiguration и YamlConfiguration по разному загружают конфиг.
     

Share This Page