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

Internal error reason java lang exceptionininitializererror фсс ФОНД СОЦИАЛЬНОГО СТРАХОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Содержание: 1. Ошибка вызова сервиса передачи/получения данных. Сообщение не соответствует формату XML Encryption. Обратитесь к разработчику программного обеспечения, на котором осуществлялось шифрование данных. Сообщите следующую информацию: Отсутствует элемент EncryptedData class ru.ibs.cryptopro.jcp.crypt.CryptoException Причины: Неправильные настройки АРМ ЛПУ в части подписания; Неправильные настройки криптопровайдера; […]

Содержание

  1. Internal error reason java lang exceptionininitializererror фсс
  2. Содержание:
  3. 1. Ошибка вызова сервиса передачи/получения данных.
  4. 2. ORA-20015: Не удалось определить состояние ЭЛН:
  5. 3. ORA-20013: Не удалось обновить данные. Обновляемая запись потеряла актуальность
  6. 4. ORA-20001: Доступ к ЭЛН с №_________, СНИЛС_________, статусом _________ — ограничен
  7. 5. Ошибка вызова сервиса передачи / получения данных. Не удалось расшифровать сообщение.
  8. 6. Ошибка вызова сервиса передачи/получения данных.
  9. 7. Ошибка при установке АРМ ЛПУ: Unable to build entity manager factory.
  10. 8. Ошибка при попытке загрузки данных из базы данных.
  11. 9. Ошибка при попытке зайти в настройки подписи в ПО АРМ ЛПУ.
  12. 10. Ошибка вызова сервиса передачи/получения данных. Invalid element in ru.ibs.fss.eln.ws.FileOperationsLn_wsdl.ROW — SERV1_DT1.
  13. 11. Ошибка при старте АРМ ЛПУ «В базе данных АРМ ЛПУ имеется некорректная запись» (Transaction already active)
  14. 12. Установка нового сертификата ФСС.
  15. 13. АРМ Подготовки расчетов для ФСС, ошибка «Набор ключей не определен»
  16. 14. АРМ ЛПУ, ошибка «Ошибка при проверке соединения с ФСС»
  17. 15. АРМ ЛПУ, ошибка «Ошибка вызова сервиса передачи/получения данных. Ошибка шифрования сообщения»

Internal error reason java lang exceptionininitializererror фсс

ФОНД СОЦИАЛЬНОГО СТРАХОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ

Содержание:

1. Ошибка вызова сервиса передачи/получения данных.

Сообщение не соответствует формату XML Encryption.
Обратитесь к разработчику программного обеспечения, на котором осуществлялось шифрование данных.
Сообщите следующую информацию: Отсутствует элемент EncryptedData class ru.ibs.cryptopro.jcp.crypt.CryptoException

Причины:

Неправильные настройки АРМ ЛПУ в части подписания;

Неправильные настройки криптопровайдера;

Истечение срока действия сертификата, закрытого ключа или лицензии КриптоПро CSP.

Что делать:

1. Выполните настройку АРМ ЛПУ

В меню Администрирование – Настройка подписей для сервисов установите флаг «Шифровать сообщение». После этого Вам необходимо указать Имя сертификата ФСС и Тип контейнера. Данный сертификат можно скачать на сайте https://lk.fss.ru/cert.html (если Вы настраиваете сервисы для тестирования, то Вам необходимо скачать ТЕСТОВЫЙ сертификат ФСС). После скачивания установите его на компьютер.
Обратите внимание, Сертификаты МО (должен иметь закрытый ключ) и ФСС должны быть установлены в хранилище «Личное», соответственно тип контейнера выбран «Личные». Вся цепочка вышестоящих сертификатов в папку «Доверенные корневые центры сертификации». Все сертификаты должны быть актуальными и не отозванными.

2. Проверьте настройки криптопровайдера

При использовании криптопровайдера Vipnet CSP рабочей версией является 4.4 и выше.
При использовании криптопровайдера КриптоПро CSP рабочей версией является 4.0 и выше.
Через «Панель управления» в КриптоПро CSP зайдите на вкладку «Сервис», нажмите кнопку «Удалить запомненные пароли…». В окне «Удаление запомненных паролей» выбрать «Удалить все запомненные пароли закрытых ключей: Пользователя».
Проверьте настройки на вкладке «Алгоритмы». В выпадающем списке «Выберите тип CSP» выберите GOST R 34.10-2012. Должны быть установлены следующие параметры:

«Параметры алгоритма шифрования» — ГОСТ 28147-89, параметры алгоритма шифрования TK26 Z

«Параметры алгоритма подписи» — ГОСТ 34.10-2001, параметры по умолчанию

«Параметры алгоритма Диффи-Хеллмана» — ГОСТ 34.10-2001, параметры обмена по умолчанию

Ниже приведен образец настроек в КриптоПро CSP 5.0

Если вы не можете изменить параметры на вкладке «Алгоритмы» (даже запустив КриптоПро CSP от лица администратора), необходимо сделать следующее:
В реестре Windows открыть ключ HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeCrypto ProCryptographyCurrentVersionParameters и изменть значение EnableOIDModify на 1. После чего необходимо перезагрузиться.

После изменения настроек криптопровайдера необходимо перезапустить АРМ ЛПУ.

3. Проверьте сертификаты и лицензии

С помощью системной утилиты certmgr.msc (кнопка Пуск — Выполнить (Найти программы и файлы)) откройте ваш сертификат. Срок действия сертификата не должен быть просрочен.
Запустите КриптоПро CSP. На вкладке «Общие» проверьте срок действия лицензии криптопровайдера.
Откройте вкладку «Сервис» и нажмите кнопку «Протестировать». Выберите контейнер закрытого ключа вашего сертификата. В открывшемся окне тестирования не должно быть ошибок, сообщений об истечении срока действия ключа итп.

2. ORA-20015: Не удалось определить состояние ЭЛН:

Для перехода в статус ‘Продлен’ необходимо добавить период нетрудоспособности;
Для перехода в статус ‘Закрыт’ необходимо заполнить поля: ‘Приступить к работе с: дата’ или ‘Иное: код’;
Для перехода в статус ‘Направление на МСЭ’ необходимо заполнить поле ‘Дата направления в бюро МСЭ’

Причина:

1. В системе существует ЭЛН с таким же номером и такими же данными, которые Вы присылаете (дублирование данных);

2. Присылаемые данные в ЭЛН не соответствуют этапу оформления (заполнения) ЭЛН:

  • недостаточно данных для определения состояния ЭЛН;
  • внесенные данные относятся к разным этапам оформления (заполнения) ЭЛН.

Что делать:

1. Запросите актуальное состояние ЭЛН из системы, тем самым Вы исключите повторную отправку тех же данных;

2. Выполните необходимую дальнейшую операцию с ЭЛН:

  • продление (добавить новый период нетрудоспособности);
  • закрытие (добавить информацию о закрытии);
  • направление на МСЭ (добавить информацию о направлении на МСЭ).

3. ORA-20013: Не удалось обновить данные. Обновляемая запись потеряла актуальность

Причина:

Вы пытаетесь изменить ЭЛН, который ранее уже был кем-то изменен.

Что делать:

1. Запросите актуальное состояние ЭЛН из системы, тем самым Вы исключите повторную отправку тех же данных;

2. Выполните необходимую дальнейшую операцию с ЭЛН в соответствии с порядком 624н:

  • продление (добавить новый период нетрудоспособности);
  • закрытие (добавить информацию о закрытии);
  • направление на МСЭ (добавить информацию о направлении на МСЭ).

4. ORA-20001: Доступ к ЭЛН с №_________, СНИЛС_________, статусом _________ — ограничен

Причина:

Вы пытаетесь получить данные ЭЛН, который находится в статусе, ограничивающем Ваш доступ. Например, страхователь пытается получить данные ЭЛН, который еще не закрыт медицинской организацией. Согласно процессной модели, страхователь может получить данные ЭЛН для редактированиня только на статусе 030 — Закрыт. Другой пример — бюро МСЭ не может получить данные ЭЛН, который не направлен в бюро МСЭ (статус 040 — Направление на МСЭ)

Что делать:

1. Удостоверьтесь, что номер ЭЛН, данные которого вы хотите получить, введен верно.

2. Дождитесь перехода ЭЛН на статус, который позволит Вам получить данные ЭЛН.

5. Ошибка вызова сервиса передачи / получения данных. Не удалось расшифровать сообщение.

Возможно сообщение было зашифровано на ключе, отличном от ключа уполномоченного лица ФСС.

Проверьте правильность и актуальность ключа уполномоченного лица ФСС.

Причины:

В настройках подписания и шифрования в используемом пользователем ПО, в поле «Сертификат уполномоченного лица ФСС» указан неверный сертификат;

Используется криптопровайдер Vipnet CSP определенной сборки;

Что делать:

Укажите верный сертификат уполномоченного лица ФСС:

  • Определите направление отправки запросов — тестовое или продуктивное;
  • Скачайте сертификат уполномоченного лица ФСС, опубликованный в соответствующем разделе (для взаимодействия с ЭЛН, ОВЭД, СЭДО, ЭРС или ПВСО, Ф4) на сайте Фонда:
    Сертификат для тестовой отправки опубликован на сайте https://lk-test.fss.ru/cert.html
    Сертификат для продуктива опубликован на сайте https://lk.fss.ru/cert.html;
  • Закройте используемое ПО. Удалите установленные сертификаты ФСС с помощью системной утилиты certmgr.msc (кнопка Пуск — Выполнить (Найти программы и файлы)).
    Установите скачанный сертификат на компьютер в хранилище «Личное» для текущего пользователя для взаимодействия с ЭЛН.
    Для взаимодействия с шлюзом ПВСО в АРМ Подготовки расчетов для ФСС, сертификат ФСС устанавливается в хранилище «Другие пользователи»;
  • Укажите данный сертификат в соответствующих настройках используемого ПО.

При использовании криптопровайдера Vipnet CSP — рабочей версией является 4.4 и выше.

6. Ошибка вызова сервиса передачи/получения данных.

Ошибка шифрования сообщения для получателя. Client received SOAP Fault from server: Fault occurred while processing. Please see the log to find more detail regarding exact cause of the failure.null

Причина:

Вы указали неверный сертификат для шифрования сообщения в поле «Имя сертификата МО»: указанный сертификат может быть использован только для подписания, но не шифрования.

Что делать:

Закажите и установите сертификат, который поддерживает не только операцию подписания, но и операцию шифрования.

7. Ошибка при установке АРМ ЛПУ: Unable to build entity manager factory.

Возникла ошибка при попытке загрузки данных из базы данных. Сообщите администратору следующую информацию:

Unable to build entity manager factory.

Причина:

  • Приложение было установлено некорректно (некорректно установлена БД);
  • База данных приложения установлена, но не доступна.

Что делать:

1. Запустите установку с правами администратора;

2. Выполните установку программы по шагам инструкции (путь, где лежит инструкция: http://lk.fss.ru/eln.html).

Если установка приложения выполнена в соответствии с инструкцией, но ошибка повторяется, необходимо проверить:

  • На компьютере отключена служба postgresql-9.5. Правой кнопкой на значке «Мой компьютер» — Управление — Службы и приложения — Службы, postgresql-9.5 должна быть запущена, запуск — автоматически. Для настройки запуска и работы службы Windows обратитесь к вашему системному администратору;
  • В настройках подключения к базе данных указан неправильный пароль для пользователя fss. Проверьте, что в БД этот пароль не менялся, пароль по умолчанию — fss;
  • Проверьте каталог установки БД PostgreSQL, по умолчанию — C:postgresql;
  • Подключение к БД PostgreSQL осуществляется по умолчанию по порту 5432. Этот порт должен быть открыт и доступен. Для проверки обратитесь к вашему системному администратору;
  • Приложение на клиентской машине не может связаться с сервером т.к. установлено какое либо сетевое ограничение. Проверьте, настройки антивирусов, файерволов, прочего сетевого ПО, для клиентской машины должны быть прописаны разрешения подключения к серверу по порту 5432.

8. Ошибка при попытке загрузки данных из базы данных.

Возникла ошибка при попытке загрузки данных из базы данных.

Сообщите следующую информацию: org.hibernate.exception.SQLGrammarException: could not extract ResultSet.

Причина:

Приложение АРМ ЛПУ не может получить данные из базы данных PostgreSQL. Эта ошибка возникает чаще всего после установки обновления, когда приложение обновлено, а база данных PostgreSQL по какой либо причине не обновлена.

Что делать:

  • Если приложение установлено на компьютере пользователя, а база данных PostgreSQL — на сервере. Необходимо запустить обновление приложение не только на клиенте, но и на серверной машине;
  • Если и приложение, и база данных PostgreSQL установлены на одной машине. Проверьте каталог установки приложения. По умолчанию, приложение АРМ ЛПУ ставится в каталог C:FssTools, а база данных PostgreSQL в каталог C:postgresql. Если при первичной установке была выбрана другая директория для установки приложения — то при обновлении вы должны указать именно эту директорию.

9. Ошибка при попытке зайти в настройки подписи в ПО АРМ ЛПУ.

При попытке зайти в настройки подписи в ПО АРМ ЛПУ выходит ошибка «Internal error. Reason: java.lang.ExceptionInInitializerError» или

«Internal Error. Reason: java.lang.NoClassDefFoundError: Could not initialize class ru.ibs.fss.common.security.signature.COMCryptoAPIClient»

Причина:

Приложение было установлено некорректно (не зарегистрирована библиотека GostCryptography.dll).

Что делать:

1. Необходимо убедиться, что разрядность ОС совпадает с разрядностью установщика приложения.

2. Проверить, установлены ли в системе компоненты Microsoft.Net Framework версии 4 и выше (по умолчанию данные компоненты устанавливаются в C:WindowsMicrosoft.NETFramework или C:WindowsMicrosoft.NETFramework64). Данные компоненты можно скачать с сайта microsoft.com.

3. Проверить, что в папке, куда установлено приложение, имеется файл GostCryptography.dll (по умолчанию данный файл устанавливается в C:FssTools). Если данного файла нет, попробуйте переустановить приложение.

4. Если все верно, в командной строке выполнить:

cd C:FssTools — переходим в папку, в которой находится файл GostCryptography.dll

C:WindowsMicrosoft.NETFrameworkv4.0.30319RegAsm.exe /registered GostCryptography.dll — с указанием вашего адреса установки компонентов Microsoft.NET. Обратите внимание, что на ОС Windows 10 адрес установки компонентов Microsoft.NET может отличаться от приведенного в примере (C:WindowsMicrosoft.NETFramework64v4.0.30319RegAsm.exe /registered GostCryptography.dll).

5. Перезапустить приложение.

10. Ошибка вызова сервиса передачи/получения данных. Invalid element in ru.ibs.fss.eln.ws.FileOperationsLn_wsdl.ROW — SERV1_DT1.

Ошибка: «Ошибка вызова сервиса передачи/получения данных. Invalid element in ru.ibs.fss.eln.ws.FileOperationsLn_wsdl.ROW — SERV1_DT1»

Причина:

Поле «SERV1_DT1» было исключено в новой спецификации 1.1 (14 версия и выше АРМ ЛПУ), изменена строка соединения.

Что делать:

Поменять строку соединения в настройках.

В меню Администрирование – Настройки сервисов ФСС – Строка соединения, укажите следующий адрес сервиса:

Без шифрования https://docs-test.fss.ru/WSLnV11/FileOperationsLnPort?WSDL (Обратите внимание, при отправке на сервис без шифрования в настройках электронной подписи должен быть снят флаг «Шифровать сообщение»)

11. Ошибка при старте АРМ ЛПУ «В базе данных АРМ ЛПУ имеется некорректная запись» (Transaction already active)

Причина:

Данная ошибка возникает в случае, когда в какой либо таблице БД приложения сохранены некорректные записи (например, пустое или некорректное значение номера ЭЛН, пустые обязательные поля, строки с одинаковым значением номера ЭЛН, в т.ч. записи-дубли). Если в БД АРМ ЛПУ имеются такие записи, то возможны следующие ошибки:

  • Отправка и получение ЭЛН может происходить некорректно, зависать окно статусной строки;
  • Невозможно запросить номер ЭЛН из формы ЭЛН.

Что делать:

Для исправления нужно удалить из БД приложения неверную строку (такие записи можно удалить только вручную).

Необходимо подключиться к серверу базы данных PostgreSQL, найти и удалить из базы ошибочную строку. При установке АРМ ЛПУ, вместе с БД и компонентами PostgreSQL устанавливается клиент для подключения к БД. По умолчанию находится здесь: C:postgresqlbinpgAdmin3.exe

В интерфейсе клиента открывается сервер PostgreSQL 9.5. Затем открывается схема fss (пользователь fss, пароль fss) – Схемы – public – Таблицы.

Данные в АРМ ЛПУ хранятся в таблицах:

  • fc_eln_data_history — данные листков нетрудоспособнсти;
  • fc_eln_periods — сведения о периодах нетрудоспособности;
  • ref_ln_numbers — список запрошенных номеров ЭЛН.

Для просмотра таблицы необходимо выделить ее в дереве таблиц и нажать на значок «Просмотр данных в выбранном объекте»

Выделяете и удаляете (delete) строку, которая содержит пустое значение номера ЭЛН или другие ошибки.
Как вариант, для поиска и удаления ошибочных записей возможно использование SQL запроса типа:
select id from fc_eln_data_history where ln_code is null;
delete from fc_eln_data_history where id;
Для открытия окна SQL запросов необходимо в главном меню нажать на значок «SQL».

Обратите внимание! При удалении строки ЭЛН, если в этом ЭЛН были созданы периоды нетрудоспособности, сначала необходимо удалить их. Периоды нетрудоспособности хранятся в отдельной таблице fc_eln_periods и связаны с fc_eln_data_history по номеру ЭЛН. Просмотр и удаление периодов аналогично, описанному выше.

12. Установка нового сертификата ФСС.

Установка нового сертификата ФСС описана в инструкции, которую можно скачать по ссылке
https://cabinets.fss.ru/Установка нового сертификата ФСС.docx

13. АРМ Подготовки расчетов для ФСС, ошибка «Набор ключей не определен»

Причина:

ГОСТ сертификата ФСС не соответствует выбранному в настройках криптопровайдеру, либо криптопровайдер не может получить закрытый ключ из контейнера закрытого ключа для выбранного сертификата.

Что делать:

  • В настройках АРМ Подписания и шифрования проверить, что указанный криптопровайдер соответствует реально установленному у пользователя;
  • В настройках АРМ Подписания и шифрования проверить, что ГОСТы сертификата подписания и сертификата ФСС одинаковы и соответствуют выбранному криптопровайдеру;
  • Если используется сертификат ЭП по ГОСТ 2012, откройте сертификат, вкладка «Состав», параметр «Средство электронной подписи».
    Необходимо проверить, что средство ЭП соответствует криптопровайдеру, установленному у пользователя;
  • Если используется сертификат ЭП по ГОСТ 2012 и криптопровайдер КриптоПро, проверьте настройки на вкладке «Алгоритмы». В выпадающем списке «Выберите тип CSP» выберите GOST R 34.10-2012 (256). Должны быть установлены следующие параметры:

«Параметры алгоритма шифрования» — ГОСТ 28147-89, параметры алгоритма шифрования TK26 Z

«Параметры алгоритма подписи» — ГОСТ 34.10-2001, параметры по умолчанию

«Параметры алгоритма Диффи-Хеллмана» — ГОСТ 34.10-2001, параметры обмена по умолчанию

  • В сертификате отсутствует закрытый ключ. С помощью системной утилиты certmgr.msc откройте сертификат, на вкладке «Общие» должно быть написано «Есть закрытый ключ для этого сертификата»;
  • Криптопровайдер не видит контейнер закрытого ключа для этого сертификата. В криптопровайдере КриптоПро CSP перейдите на вкладку «Сервис» и нажмите «Удалить запомненные пароли» — для пользователя;
  • Возможно, контейнер поврежден сторонним ПО. Переустановите сертификат заново, с обязательным указанием контейнера;
  • Переустановите криптопровайдер.
  • 14. АРМ ЛПУ, ошибка «Ошибка при проверке соединения с ФСС»

    Ошибка: Ошибка дешифрования сообщения. Ошибка при попытке расшифровать сообщение. Стек: java.lang.NullPointerException org.apache.cxf.binding.soap.SoapFault: Ошибка при попытке расшифровать сообщение. Стек: java.lang.NullPointerException

    Причина:

    Расшифровывается запрос пользователя на сертификате ФСС, необходимо проверить настройки шифрования в настройках электронной подписи, определить причины возникновения в «Настройках электронной подписи»:

    В составе сертификата раздел «Использование ключа» нет атрибута «Шифрование данных»

    не проставлена галка «Шифровать сообщение» (для строки соединения с ФСС, где прописано «. -crypto-v20. «)

    выбран тестовый сертификат ФСС для Прода (и наоборот), либо ошибка в самом сертификате

    Неправильные настройки криптопровайдера

    Истечение срока действия сертификата, закрытого ключа или лицензии КриптоПро CSP

    Что делать:

    15. АРМ ЛПУ, ошибка «Ошибка вызова сервиса передачи/получения данных. Ошибка шифрования сообщения»

    Ошибка вызова сервиса передачи/получения данных. Ошибка шифрования сообщения. Ошибка при попытке зашифровать сообщение. Стек: java.lang.NullPointerException.

    Причина:

    Зашифровывается сообщение пользователя на сертификате МО, указанное в настройках.

    Источник

    Improve Article

    Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    An unexpected, unwanted event that disturbed the normal flow of a program is called an Exception.

    There are mainly two types of exception in Java:

    1. Checked Exception

    2. Unchecked Exception

    ExceptionInInitializerError is the child class of the Error class and hence it is an unchecked exception. This exception is rise automatically by JVM when JVM attempts to load a new class as, during class loading, all static variables and static initializer block are being evaluated. This exception also acts as a signal that tells us that an unexpected exception has occurred in a static initializer block or in the assignment of value to the static variable.

    There are basically two cases when ExceptionInInitializerError can occur in a Java Program:

    1. ExceptionInInitializerError While Assigning Value To The Static Variable

    In the below example we assign a static variable to 20/0 where 20/0 gives an undefined arithmetic behavior and hence there occurs an exception in the static variable assignment and ultimately we will get ExceptionInInitializerError.

    Java

    class GFG {

        static int x = 20 / 0;

        public static void main(String[] args)

        {

            System.out.println("The value of x is " + x);

        }

    }

    2. ExceptionInInitializerError While Assigning Null Value Inside A Static Block

    In the below example we have declared a static block inside which we create a string s and assign a null value to it, and then we are printing the length of string, so we will get NullPointerException because we were trying to print the length of a string that has its value as null and as we see that this exception occurs inside the static block, so we will get ExceptionInInitializerError.

    Java

    class GFG {

        static

        {

            String s = null;

            System.out.println(s.length());

        }

        public static void main(String[] args)

        {

            System.out.println("GeeksForGeeks Is Best");

        }

    }

    How to Resolve Java.lang.ExceptionInInitializerError ?

    • We can resolve the java.lang.ExceptionInInitializerError by ensuring that static initializer block of classes does not throw any Runtime Exception.
    • We can resolve also resolve this exception by ensuring that the initializing static variable of classes also doesn’t throw any Runtime Exception.

    Неизвестное нежелательное событие, нарушившее нормальный ход выполнения программы, называется исключением.

    В Java есть в основном два типа исключений:

    1. Проверяемое исключение

    2. Непроверенное исключение

    ExceptionInInitializerError — это дочерний класс класса Error и, следовательно, это непроверенное исключение. Это исключение автоматически создается JVM, когда JVM пытается загрузить новый класс, поскольку во время загрузки класса оцениваются все статические переменные и блок статического инициализатора. Это исключение также действует как сигнал, который сообщает нам, что непредвиденное исключение произошло в блоке статического инициализатора или при присвоении значения статической переменной.

    В основном есть два случая, когда ExceptionInInitializerError может возникнуть в программе Java:

    1. ExceptionInInitializerError при присвоении значения статической переменной

    В приведенном ниже примере мы назначаем статической переменной 20/0, где 20/0 дает неопределенное арифметическое поведение, и, следовательно, возникает исключение в назначении статической переменной, и в конечном итоге мы получим ExceptionInInitializerError.

    Ява

    class GFG {

    static int x = 20 / 0 ;

    public static void main(String[] args)

    {

    System.out.println( "The value of x is " + x);

    }

    }

    2. ExceptionInInitializerError при присвоении нулевого значения внутри статического блока

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

    Ява

    class GFG {

    static

    {

    String s = null ;

    System.out.println(s.length());

    }

    public static void main(String[] args)

    {

    System.out.println( "GeeksForGeeks Is Best" );

    }

    }

    Как разрешить Java.lang.ExceptionInInitializerError?

    • Мы можем разрешить java.lang.ExceptionInInitializerError, убедившись, что статический блок инициализатора классов не генерирует никаких исключений времени выполнения.
    • Мы также можем разрешить это исключение, убедившись, что инициализирующая статическая переменная классов также не генерирует никаких исключений времени выполнения.

    Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса «Основы Java и Java Collections» по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

    Every time I encounter this exception in IntelliJ, I fix it trivially and forget the fix easily.

    Code:

    package whatever;
    import org.junit.Test;
    public class TestClass
    {
        @Test
        void test() {}
    }
    

    Scenario:

    • Add new TestClass.
    • Right-click TestClass.
    • Select «Run ‘TestClass'» to run test cases.

    The «Messages Build» pane shows:

    Information:javac 9-ea was used to compile java sources
    Information:Module "dummy" was fully rebuilt due to project configuration/dependencies changes
    Information:8/16/17 11:35 PM - Compilation completed with 1 error and 0 warnings in 1s 663ms
    Error:java: java.lang.ExceptionInInitializerError
    

    What can possibly go wrong?

    What are the likely issues in this simple scenario?

    IntelliJ: COMMUNITY 2017.1 (idea-IC-171.4424.56)

    asked Aug 16, 2017 at 15:54

    uvsmtid's user avatar

    uvsmtiduvsmtid

    4,0974 gold badges37 silver badges63 bronze badges

    To fix the issue, I do:

    • File -> Project Structure… -> Project Settings / Project -> Project SDK.
    • Change from «9-ea» to «1.8».

    DETAILS

    Apparently, the issue is discrepancies in selected JDK-s to build (java 9) and run (java 8).

    I’m not sure how «9-ea» gets re-selected there for the same project — neither IntelliJ itself runs in «9-ea» JRE (according to Help -> About) nor JAVA_HOME env var is set to it nor other possible settings (like Maven -> Runner) suggest any «9-ea».

    I also didn’t manage to run the test under the same JDK (java 9) which it gets compiled under. However, it’s unclear what JDK tests are run under because IntelliJ reports only about JDK for compilation.

    answered Aug 16, 2017 at 16:14

    uvsmtid's user avatar

    uvsmtiduvsmtid

    4,0974 gold badges37 silver badges63 bronze badges

    2

    If you use Lombok: For me it was a solution to set the newest version for my maven lombok dependency in the pom.xml.

       *<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
            <version>1.18.8</version>
        </dependency>*
    

    answered Aug 6, 2019 at 14:38

    SJX's user avatar

    SJXSJX

    90912 silver badges15 bronze badges

    I was facing same error when i tried to run my application in IntelliJ-2019.2 version. Below are the steps i followed to resolve this issue.

    Versions:

    IntelliJ : IDEA-IntelliJ-2019.2

    Java : jdk1.8_221

    1. Go to below path in IntelliJ

    File -> Project Structure -> Project -> Project SDK -> (select java version which you want to use )

    (In my case under ‘project SDK’ java-11 was selected, I changed it to ‘java8’)

    1. Click on ‘Apply’ and then ‘OK’.

    enter image description here

    enter image description here

    I feel I ran into this issue because IntelliJ was trying to compile my java classes using in-built java-11 whereas my java classes are built on java-8. So when i explicitly configured java-8 in IntelliJ, It worked!! Hope this helps.

    answered Nov 6, 2019 at 9:35

    Tapan Hegde's user avatar

    Tapan HegdeTapan Hegde

    1,2001 gold badge8 silver badges24 bronze badges

    I started seeing this exception once I installed Java 11 in my machine. JAVA_HOME was by default pointing to Java 11 and my project was still in Java 8. Changing JAVA_HOME to Java 8 jdk fixed the issue for me.

    If you have multiple projects each running on a different JDK, use this command to temporarily change the Java version per command.

    JAVA_HOME=/path/to/JVM/jdk/Home mvn clean install

    answered Aug 12, 2019 at 15:23

    Michael Scott's user avatar

    If you have recently updated your IDE then you can try these steps.

    1. Delete .idea directory for the idea project/workspace
    2. Then go to File -> Invalidate Caches / Restart…
    3. Once Idea is restarted re-add/import your module(s)

    answered Apr 18, 2019 at 15:29

    Pravin Jadhav's user avatar

    I faced a similar issue with JARs and Jena (while run from IntelliJ it works).
    I was using Apache Jena v4.0.0 in my project and have built a JAR (with a main class for the JAR to act as a console app).
    The JAR builts successfully with IntelliJ but when run throws java.lang.ExceptionInInitializerError ... Caused by: java.lang.NullPointerException. NPE suggests that something was not initialized properly.
    The jar built with previous version Jena 3.17.0 works perfectly.

    What I did to fix it
    I’ve opened both the JARs, compared their META-INF folders and encountered the difference in

    my.jarMETA-INFservicesorg.apache.jena.sys.JenaSubsystemLifecycle
    

    The new version (jena v4.0.0) contains only one line:

    org.apache.jena.tdb.sys.InitTDB
    

    The old version (jena v3.17.0) contains two different lines:

    org.apache.jena.riot.system.InitRIOT
    org.apache.jena.sparql.system.InitARQ
    

    I’ve added the old two lines to the file and repacked new JAR with it:

    org.apache.jena.tdb.sys.InitTDB
    org.apache.jena.riot.system.InitRIOT
    org.apache.jena.sparql.system.InitARQ
    

    It resolved my issue.
    Update: recent Jena v4.4.0 builts with the same «bug».
    I’m not an expert and there is probably a better way than patching a JAR by hand.
    But I still hope that this solution will help someone like me.

    answered Apr 2, 2022 at 9:08

    Samantra's user avatar

    SamantraSamantra

    631 silver badge6 bronze badges

    Понравилась статья? Поделить с друзьями:
  • Java lang exceptionininitializererror no error message
  • Java lang exception initialize error
  • Java lang exception idtoken verification error
  • Java lang error что это
  • Java lang error что делать