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

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Ferrun, 15 июн 2013.

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

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

    Баллы:
    63
    Имя в Minecraft:
    b0mbovix
    Плагин при первом запуске создает файл с конфигурацией и добавляет туда записи:
    Код:
    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");
                }
            }
    Дело все в том, что при чтении конфигурации из файла, например так:
    Код:
    config = getConfig();
            if (command.getName().equalsIgnoreCase("server")){
                if (args.length > 0){
                    if (args[0].equalsIgnoreCase("info")){
                        sender.sendMessage(config.getString("server.info"));
                        return true;
                    }
                }
            }
    В игре текст выводится успешно, никаких ошибок не возникает, однако в консоли сервера ошибка:
    Код:
    [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 Старожил Пользователь

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

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

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

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Кодировку файла упорол, но как?
     
    ВремяПриключений нравится это.
  6. Автор темы
    Ferrun

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

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

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

    ------

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

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

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

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

Поделиться этой страницей