- Баллы
- 103
Его можно прямо из джарника считывать.Это только первая часть ребуса, ConfigurationNode надо как-то вытащить из файла в джарнике. Хотя мне всё равно не интересно.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Его можно прямо из джарника считывать.Это только первая часть ребуса, ConfigurationNode надо как-то вытащить из файла в джарнике. Хотя мне всё равно не интересно.
А можно пожалуйста с этого места подробнее?Его можно прямо из джарника считывать.
А можно пожалуйста с этого места подробнее?
Я читал конечно документацию (на английском) но из-за того что там все на английском все что я смог это сделать стандартный конфиг 😁
Как можно из джарника считать какой-то HOCON конфиг?
import java.net.URL;
URL jarConfigFile = this.getClass().getResource("defaultConfig.conf");
ConfigurationLoader<CommentedConfigurationNode> loader =
HoconConfigurationLoader.builder().setURL(jarConfigFile).build();
Выдает NullPointerException..Java:import java.net.URL; URL jarConfigFile = this.getClass().getResource("defaultConfig.conf"); ConfigurationLoader<CommentedConfigurationNode> loader = HoconConfigurationLoader.builder().setURL(jarConfigFile).build();
@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);
}
}
getResourcce() возвращает путь до класса, у которого вызван этот метод.Выдает NullPointerException..
Java:@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); } }![]()
![]()
![]()
![]()
ua.gwm.sponge_plugin.mcnevendaar.langs.en_US/ru_RU.conf
Попытался вывести на экран URL, не смог, тоже NPE, попытался создать просто new Url("langs/ru_RU.conf")getResourcce() возвращает путь до класса, у которого вызван этот метод.
В этом случае путь должен быть таким:Код:ua.gwm.sponge_plugin.mcnevendaar.langs.en_US/ru_RU.conf
Ну так и есть. Пропиши путь вида /ua/gwm/sponge_plugin/mcnevendaar/langs.en_US/ru_RU.confПопытался вывести на экран URL, не смог, тоже NPE, попытался создать просто new Url("langs/ru_RU.conf")
тоже не вышло, MalformedURLException..
Ты когда getResource вызываешь, путь берётся относительно класса, у которого ты вызвал этот метод. Если перед langs добавишь "/", то по идее должно работать, либо файлы с языками кладешь в этот пакет:Попытался вывести на экран URL, не смог, тоже NPE, попытался создать просто new Url("langs/ru_RU.conf")
тоже не вышло, MalformedURLException..
ua.gwm.sponge_plugin.mcnevendaar.langs
Ну так и есть. Пропиши путь вида /ua/gwm/sponge_plugin/mcnevendaar/langs.en_US/ru_RU.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 = 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");
Первые 4 варианта - идиотизм. Перечитай еще раз то, что я написал, либо иди книги по java читать.Java: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..
Как надо то?(
Он итак в джарнике..Файл должен быть в твоем джарнике, все просто.
Я тебе ****ь в 3 раз говорю, файл должен быть там, где лежит class файл, у которого ты вызвал getResource!Он итак в джарнике..
Да у него файл лежит в /langs, а класс у которого берёт ресурс лежит в пакете, getResource ищет относительно класса и нихрена не находит, я ему уже сказал, либо "/" в начале аргумента, либо папку langs в пакет, где класс находится кидает. Они ничего из этого не уяснил.Если ты дергаешь класс из другого джарника, используй рефлексию.
Class c = Class.forName("packagename.classname"); Любой класс из sponge.jar.
URL url = c.getResource("/ua/gwm/sponge_plugin/mcnevendaar/langs/ru_RU.conf");
Да, до меня упорно не доходит в начале ЧЕГО мне надо добавить "/"??...Я тебе ****ь в 3 раз говорю, файл должен быть там, где лежит class файл, у которого ты вызвал getResource!
Да у него файл лежит в /langs, а класс у которого берёт ресурс лежит в пакете, getResource ищет относительно класса и нихрена не находит, я ему уже сказал, либо "/" в начале аргумента, либо папку langs в пакет, где класс находится кидает. Они ничего из этого не уяснил.
Смотри, напиши так:Да, до меня упорно не доходит в начале ЧЕГО мне надо добавить "/"??...
![]()
URL ruConf = this.getClass().getResource("/langs/ru_RU.conf");
resources
langs
langs у меня итак в папке resources (я же скидывал скрин), а так - попробую..Смотри, напиши так:
А в папкуJava:URL ruConf = this.getClass().getResource("/langs/ru_RU.conf");
Закидываешь папкуКод:resources
С конфигами.Код:langs
Боже, ребят, читайте больше книг, не будет таких вопросов. Иногда складывается ощущение, что вы не умеете писать на Java, только пишете плагины, а если что-то отличается от шаблонного действия - ступор.
Ну в этом и была проблема. Читай вот:langs у меня итак в папке resources (я же скидывал скрин), а так - попробую..
разве? всегда использовал абсолютный и брал файл из корня, в чём подвох?Я тебе ****ь в 3 раз говорю, файл должен быть там, где лежит class файл, у которого ты вызвал getResource!
Ты "/" в начале ставил.разве? всегда использовал абсолютный и брал файл из корня, в чём подвох?
Подвох прост.разве? всегда использовал абсолютный и брал файл из корня, в чём подвох?