1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Sponge: Будущее Bukkit и Minecraft моддинга в целом

Тема в разделе "Sponge", создана пользователем ql_Nik_lp, 10 сен 2014.

  1. Larin

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

    Баллы:
    103
    Его можно прямо из джарника считывать.
     
  2. Mr_RoboMan

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

    Баллы:
    123
    А можно пожалуйста с этого места подробнее?
    Я читал конечно документацию (на английском) но из-за того что там все на английском все что я смог это сделать стандартный конфиг :D
    Как можно из джарника считать какой-то HOCON конфиг?
     
  3. Larin

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

    Баллы:
    103
    Код:
    import java.net.URL;
    
    URL jarConfigFile = this.getClass().getResource("defaultConfig.conf");
    ConfigurationLoader<CommentedConfigurationNode> loader =
      HoconConfigurationLoader.builder().setURL(jarConfigFile).build();
    
     
  4. Mr_RoboMan

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

    Баллы:
    123
    Выдает NullPointerException..
    Код:
    @Listener()
        public void onGameStartedServer(GameStartedServerEvent event) {
            try {
                createConfigs();
                URL ruConf = this.getClass().getResource("langs/ru_RU.conf");
                URL enConf = this.getClass().getResource("langs/en_US.conf");
                ConfigurationLoader<CommentedConfigurationNode> ruConfLoader =
                        HoconConfigurationLoader.builder().setURL(ruConf).build();
                ruConfLoader.load(); //NPE
                ConfigurationLoader<CommentedConfigurationNode> enConfLoader =
                        HoconConfigurationLoader.builder().setURL(enConf).build();
                enConfLoader.load();
                activateMySQL();
                activateVariables();
                registerListeners();
                registerCommands();
                logger.info("Successfully enabled");
            } catch (Exception e) {
                catchException(e);
            }
        }
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
     
  5. Larin

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

    Баллы:
    103
    getResourcce() возвращает путь до класса, у которого вызван этот метод.
    В этом случае путь должен быть таким:
    Код:
    ua.gwm.sponge_plugin.mcnevendaar.langs.en_US/ru_RU.conf
     
  6. Mr_RoboMan

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

    Баллы:
    123
    Попытался вывести на экран URL, не смог, тоже NPE, попытался создать просто new Url("langs/ru_RU.conf")
    тоже не вышло, MalformedURLException..
     
  7. alexandrage

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

    Баллы:
    173
    Ну так и есть. Пропиши путь вида /ua/gwm/sponge_plugin/mcnevendaar/langs.en_US/ru_RU.conf
     
  8. Larin

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

    Баллы:
    103
    Ты когда getResource вызываешь, путь берётся относительно класса, у которого ты вызвал этот метод. Если перед langs добавишь "/", то по идее должно работать, либо файлы с языками кладешь в этот пакет:
    Код:
    ua.gwm.sponge_plugin.mcnevendaar.langs
    Этот пакет должен быть в папке ресурсов, иначе не скопируется в jar архив.
     
  9. Mr_RoboMan

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

    Баллы:
    123
    Код:
    URL ruConf = new URL("/ua/gwm/sponge_plugin/mcnevendaar/langs.ru_RU.conf");
    URL enConf = new URL("/ua/gwm/sponge_plugin/mcnevendaar/langs.en_US.conf");
    
    
    URL ruConf = new URL("/ua/gwm/sponge_plugin/mcnevendaar/langs/ru_RU.conf");
    URL enConf = new URL("/ua/gwm/sponge_plugin/mcnevendaar/langs/en_US.conf");
    
    URL ruConf = this.getClass().getResource("/ua/gwm/sponge_plugin/mcnevendaar/langs.ru_RU.conf");
    URL enConf = this.getClass().getResource("/ua/gwm/sponge_plugin/mcnevendaar/langs.en_US.conf");
    
    URL ruConf = this.getClass().getResource("/ua/gwm/sponge_plugin/mcnevendaar/langs/ru_RU.conf");
    URL enConf = this.getClass().getResource("/ua/gwm/sponge_plugin/mcnevendaar/langs/en_US.conf");
    Пробовал все это, либо NPE, либо MalforedURLE..
    Как надо то?(
     
  10. Larin

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

    Баллы:
    103
    Первые 4 варианта - идиотизм. Перечитай еще раз то, что я написал, либо иди книги по java читать.
     
  11. Mr_RoboMan

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

    Баллы:
    123
    Он итак в джарнике..
     
  12. InterVi

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

    Баллы:
    173
    Пути проверь, файл точно там? Наверняка в корень его засунул, а прописываешь хрень.
     
  13. Larin

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

    Баллы:
    103
    Я тебе ****ь в 3 раз говорю, файл должен быть там, где лежит class файл, у которого ты вызвал getResource!
    Да у него файл лежит в /langs, а класс у которого берёт ресурс лежит в пакете, getResource ищет относительно класса и нихрена не находит, я ему уже сказал, либо "/" в начале аргумента, либо папку langs в пакет, где класс находится кидает. Они ничего из этого не уяснил.
     
  14. Mr_RoboMan

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

    Баллы:
    123
    Да, до меня упорно не доходит в начале ЧЕГО мне надо добавить "/"??...
    [​IMG]
     
  15. Larin

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

    Баллы:
    103
    Смотри, напиши так:
    Код:
    URL ruConf = this.getClass().getResource("/langs/ru_RU.conf");
    А в папку
    Код:
    resources
    Закидываешь папку
    Код:
    langs
    С конфигами.

    Боже, ребят, читайте больше книг, не будет таких вопросов. Иногда складывается ощущение, что вы не умеете писать на Java, только пишете плагины, а если что-то отличается от шаблонного действия - ступор.
     
  16. Mr_RoboMan

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

    Баллы:
    123
    langs у меня итак в папке resources (я же скидывал скрин), а так - попробую..
     
  17. Larin

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

    Баллы:
    103
  18. InterVi

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

    Баллы:
    173
    разве? всегда использовал абсолютный и брал файл из корня, в чём подвох?
     
  19. Larin

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

    Баллы:
    103
    Ты "/" в начале ставил.
     
  20. alexandrage

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

    Баллы:
    173
    Подвох прост.
    getResource("/langs/ru_RU.conf"); Абсолютный от корня папки программы или архива.
    getResource("langs/ru_RU.conf"); Относительный от класса.
     

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