Log4J не похоже на работу с sudo - PullRequest
0 голосов
/ 30 мая 2020

У меня есть приложение Java, и я пытаюсь запустить это приложение при загрузке Linux. Проблема в том, что Log4J не работает с командами «runuser», «sudo» и «su». Каждый раз я получаю сообщение об ошибке:

WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
(30/05/2020-15:16:11.825) [FATAL] Unable to log file
Exception in thread "main" java.lang.NullPointerException
        at me.inao.discordbot.util.Logger.<init>(Logger.java:28)
        at me.inao.discordbot.Main.loadConfig(Main.java:65)
        at me.inao.discordbot.Main.starter(Main.java:46)
        at me.inao.discordbot.Main.main(Main.java:43)

Приложение с открытым исходным кодом, так что вот мой полный исходный код: https://github.com/onemoreplays/bufferBot Это происходит с кем-то еще? Это из-за моих плохих привычек в программировании или это ошибка где-то еще?

Спасибо за любую помощь.
Якуб.

1 Ответ

0 голосов
/ 30 мая 2020
Метод

Main#getApi() выполняется в конструкторе Logger. Но, согласно stacktrace, текущий логгер создается в методе Main#loadConfig() (Main. java, строка 46) до фактического инициализации поля api (Main. java, строка 47).

Обновление: описанная проблема в конструкторе Logger скрывает исходное исключение, выброшенное в блоке try..catch метода loadConfig. Наиболее вероятной причиной исходной проблемы является доступ к файлу config. json в папке root. Но лучший способ - исправить NPE в классе Logger, чтобы вы увидели трассировку стека исходного исключения.

Также было бы неплохо отделить Logger от вашего бизнес-журнала c.

...