Java.lang.VerifyError: Ожидается кадр карты стека в целевой ветви 5

Я развиваю свой корпоративный проект.

У меня 2 стола. И я подключился к этим таблицам с отношением OneToMany - ManyToOne. Я использую postgreSQL.

@OneToMany(fetch = FetchType.LAZY)
private Set<TblAgentParameters> tblAgentParameters;


@JoinColumn(name = "TBL_AGENT_PROPERTY_PARAMETERS_ID")
@ManyToOne(fetch = FetchType.LAZY)
private TblAgentPropertyParameters tblAgentPropertyParametersList;

Но я получаю эту ошибку.

Вызвано: java.lang.VerifyError: Ожидание кадра карты стека в целевой ветви 5 Детали исключения: Расположение: com/karcin/template/persistence/entities/TblAgentPropertyParameters.class$(Ljava/lang/String;)Ljava/lang/Class; @0: загрузить_0 Причина: Ожидаемый кадр карты стека в этом месте. Байт-код: 0x0000000: 2ab8 00ef b04c bb00 f159 2bb6 00f6 b700 0x0000010: f8bf
Таблица обработчиков исключений: bci [0, 5] => обработчик: 5

    at java.lang.Class.forName0(Native Method)[:1.8.0_271]
    at java.lang.Class.forName(Class.java:264)[:1.8.0_271]
    at com.karcin.template.persistence.entities.TblAgentParameters.class$(TblAgentParameters.java)[79:karcin-template-persistence:1.0.0.SNAPSHOT]
    at com.karcin.template.persistence.entities.TblAgentParameters.<clinit>(TblAgentParameters.java)[79:karcin-template-persistence:1.0.0.SNAPSHOT]
    at java.lang.Class.forName0(Native Method)[:1.8.0_271]
    at java.lang.Class.forName(Class.java:264)[:1.8.0_271]
    at com.karcin.template.web.controllers.ApiController.getEntityClass(ApiController.java:154)[82:karcin-template-web:1.0.0.SNAPSHOT]
    at com.karcin.template.web.controllers.ApiController.test(ApiController.java:101)[82:karcin-template-web:1.0.0.SNAPSHOT]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_271]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_271]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_271]
    at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_271]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)[144:org.apache.servicemix.bundles.spring-web:3.2.18.RELEASE_1]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)[144:org.apache.servicemix.bundles.spring-web:3.2.18.RELEASE_1]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:743)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:672)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:82)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)[146:org.apache.servicemix.bundles.spring-webmvc:3.2.18.RELEASE_1]
    ... 27 more

Как я могу это исправить.?

Похоже, используемая вами версия Spring не соответствует требованиям для JVM. Правильный ответ, вероятно, обновить Spring.

AlBlue 15.12.2020 15:32

Спасибо за ваш ответ. (:

fsk 17.12.2020 11:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
136
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что-то сгенерировало байт-код. Это что-то либо [A] глючит и напортачило здесь, создав недопустимый файл класса, либо [B] невероятно старое1.

Исправление состоит в том, чтобы исправить код, который испортил. Если это не ваш код, сообщите об ошибке в библиотеку. Если его больше никто не поддерживает, ¯\_(ツ)_/¯, вам не повезло.

Недопустимый файл класса: com/karcin/template/persistence/entities/TblAgentPropertyParameters.class.

[1] Технические детали, которые вам, вероятно, не нужно понимать: более десяти лет назад формат файла класса java был немного изменен, чтобы добавить некоторые подсказки о кадрах стека в самом файле класса. Верификатор — это то, что проверяет, является ли файл класса «действительным», и что выполнение файла класса не может привести к тому, что программисты на C обычно называют «дампом ядра» — путь выполнения, который нарушит безопасность системы и вызовет ваша программа будет немедленно принудительно удалена вашей ОС или проблема безопасности, если ОС не сможет ее обнаружить. Java обещает, что этого не может произойти, и верификатор класса является частью этого. Верификатору класса помогает эта регистрация кадра стека в файле класса: проверка правильности информации о кадре стека, а затем проверка того, что байт-код обращается только к той памяти, к которой ему разрешен доступ, намного проще и быстрее, чем проверка того, что байт-код обращается только к той памяти, к которой ему разрешен доступ без этой информации. В старых файлах классов может не быть этой регистрации, и в этом случае верификатор добавит ее за вас (но это занимает много времени, поэтому это требуется для более современных файлов классов). Таким образом, мы действительно все еще находимся на территории с ошибками: что бы ни заставило этот файл класса поместить версию файла класса, которая достаточно высока, чтобы требовались примечания кадра стека, но не добавил их, и, таким образом, верификатор отклоняет класс файл. В качестве альтернативы, поскольку это новость более чем 10-летней давности, возможно, в наши дни очень современная виртуальная машина больше не способна запускать очень старые файлы классов, потому что на этом этапе код «выяснения фрейма стека» был удален. Если это так, возврат к JDK8 может сработать, но вам действительно нужно решить эту проблему; вы используете код, который устарел более чем на 10 лет.

Благодарю за ваш ответ. (((: Я очень рад такому ответу. (: Спасибо.

fsk 17.12.2020 11:32

Другие вопросы по теме