Перейти к содержимому

Java lang exceptionininitializererror как исправить

  • автор:

Когда Java выдает ошибку ExceptionInInitializerError?

В этом кратком руководстве мы увидим, что заставляет Java создавать экземпляр исключения ExceptionInInitializerError .

Начнем с небольшого количества теории. Затем мы увидим несколько примеров этого исключения на практике.

2. Ошибка ExceptionInInitializer ​

ExceptionInInitializerError указывает , что в статическом инициализаторе возникло непредвиденное исключение . По сути, когда мы видим это исключение, мы должны знать, что Java не удалось оценить блок статического инициализатора или создать экземпляр статической переменной.

Фактически каждый раз, когда внутри статического инициализатора возникает какое-либо исключение, Java автоматически заключает это исключение в экземпляр класса ExceptionInInitializerError . Таким образом, он также поддерживает ссылку на фактическое исключение как на основную причину.

Теперь, когда мы знаем причину этого исключения, давайте посмотрим на это на практике.

3. Статический блок инициализатора​

Чтобы инициализатор статического блока вышел из строя, мы намеренно разделим целое число на ноль:

 public class StaticBlock     private static int state;    static    state = 42 / 0;   >   > 

Теперь, если мы вызовем инициализацию класса чем-то вроде:

 new StaticBlock(); 

Java lang exceptionininitializererror как исправить

Сигналы, что неожиданное исключение произошло в статическом инициализаторе. ExceptionInInitializerError бросается, чтобы указать, что исключение произошло во время оценки статического инициализатора или инициализатора для статической переменной. С выпуска 1.4 это исключение было retrofitted, чтобы соответствовать объединяющему в цепочку исключение механизму общего назначения. «Сохраненный объект throwable» это может быть обеспечено во время создания и получено доступ через getException() метод теперь известен как причина, и может быть получен доступ через Throwable.getCause() метод, так же как вышеупомянутый «метод наследства.»

Сводка конструктора

Конструкции ExceptionInInitializerError с null как его строка сообщения детали и без сохраненного объекта throwable.

Создает ExceptionInInitializerError с указанной строкой сообщения детали.

Создает новое ExceptionInInitializerError класс, сохраняя ссылку на Throwable объект, брошенный для более позднего извлечения getException() метод.

Сводка метода

Методы

Модификатор и Тип Метод и Описание
Throwable getCause()

Возвращает причину этой ошибки (исключение, которое произошло во время статической инициализации, которая заставила эту ошибку создаваться).

Возвращает исключение, которое произошло во время статической инициализации, которая заставила эту ошибку создаваться.

Методы java.lang унаследованный от класса. Throwable

Методы java.lang унаследованный от класса. Объект

Деталь конструктора

ExceptionInInitializerError
public ExceptionInInitializerError()

Конструкции ExceptionInInitializerError с null как его строка сообщения детали и без сохраненного объекта throwable. Сообщением детали является Строка, которая описывает это определенное исключение.

ExceptionInInitializerError
public ExceptionInInitializerError(Throwable thrown)

Создает новое ExceptionInInitializerError класс, сохраняя ссылку на Throwable объект, брошенный для более позднего извлечения getException() метод. Строка сообщения детали устанавливается в null .

ExceptionInInitializerError

Создает ExceptionInInitializerError с указанной строкой сообщения детали. Сообщением детали является Строка, которая описывает это определенное исключение. Строка сообщения детали сохраняется для более позднего извлечения Throwable.getMessage() метод. Есть не сохраненный объект throwable.

Деталь метода

getException
public Throwable getException()

Возвращает исключение, которое произошло во время статической инициализации, которая заставила эту ошибку создаваться. Этот метод предшествует средству объединения в цепочку исключения общего назначения. Throwable.getCause() метод является теперь привилегированными средствами получения этой информации.

getCause
public Throwable getCause()

Возвращает причину этой ошибки (исключение, которое произошло во время статической инициализации, которая заставила эту ошибку создаваться).

Платформа Java™
Стандарт Эд. 7

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE . Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.

При запуске jar-файла получаю ошибку java.lang.ExceptionInInitializerError Caused by: java.util.MissingResourceException

структура

Мне нужно использовать локализацию в моем проекте, вот его структура. С помощью Maven я собираю два jar файла — сервер и клиентскую часть вот так.

  4.0.0 UTF-8 1.8 1.8  com.itmo Lab8 1.0  org.jdom jdom2 2.0.5  ch.qos.logback logback-core 1.3.0-alpha5  ch.qos.logback logback-classic 1.3.0-alpha5  ch.qos.logback logback-access 1.3.0-alpha5  org.projectlombok lombok 1.16.4 provided  org.postgresql postgresql 42.2.14  com.jcraft jsch 0.1.55  org.junit.jupiter junit-jupiter RELEASE test  commons-io commons-io 2.6     maven-assembly-plugin  server-main package single  server-main jar-with-dependencies   true com.itmo.server.ServerMain     client-main package single  client-main jar-with-dependencies   true com.itmo.client.MainConsole          

Когда я запускаю из Идеи всё работает. Однако при запуске джарников появляется ошибка.

Exception in thread "main" java.lang.ExceptionInInitializerError Caused by: java.util.MissingResourceException: Can't find bundle for base name locals, locale ru at java.util.ResourceBundle.throwMissingResourceException(Unknown Source) at java.util.ResourceBundle.getBundleImpl(Unknown Source) at java.util.ResourceBundle.getBundle(Unknown Source) at com.itmo.utils.LocaleClass.(LocaleClass.java:14) at com.itmo.server.ServerMain.(ServerMain.java:11) 

Я использую данный класс при работе с локалями.

import lombok.Getter; import java.util.Locale; import java.util.ResourceBundle; public class LocaleClass < @Getter public ResourceBundle resourceBundle; public LocaleClass()< resourceBundle = ResourceBundle .getBundle("locals", Locale.forLanguageTag("RU"), new UTF8Control()); >public LocaleClass(ResourceBundle resourceBundle) < this.resourceBundle = resourceBundle; >public void changeLocale(Locale locale) < resourceBundle = ResourceBundle .getBundle("locals", locale, new UTF8Control()); >public enum SupportedLanguages < RU, EST, SPA, SWE >public void changeLocaleByTag(String TAG) < changeLocale(Locale.forLanguageTag(TAG)); >public void changeLocaleByTag(SupportedLanguages TAG) < changeLocale(Locale.forLanguageTag(TAG.toString())); >public String getString(String text) < return resourceBundle.getString(text); >> 

jar

Я не очень хорошо понимаю, что происходит, почему не находит мои локали и как это исправить, хоть и гуглил. UPD: добавил дерево каталогов jar

как устранить java.lang.exceptionininitializererror

Иконка канала Игры и Эксклюзивы

JAVAx64 — http://yadi.sk/d/zt6aPbEAHLrmG Надеюсь помог, сам час сидел не мог найти решение потому, что в интернете нет русских роликов по решению этой проблемы, да и вообще я таких роликов не видел! подпишитесь на мой LIVE и основной канал — http://www.youtube.com/channel/UCTBVXc3WCERC-A1r6hD6trg

Показать больше

Войдите , чтобы оставлять комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *