Я развиваю свой корпоративный проект.
У меня 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
Как я могу это исправить.?
Спасибо за ваш ответ. (:
Что-то сгенерировало байт-код. Это что-то либо [A] глючит и напортачило здесь, создав недопустимый файл класса, либо [B] невероятно старое1.
Исправление состоит в том, чтобы исправить код, который испортил. Если это не ваш код, сообщите об ошибке в библиотеку. Если его больше никто не поддерживает, ¯\_(ツ)_/¯, вам не повезло.
Недопустимый файл класса: com/karcin/template/persistence/entities/TblAgentPropertyParameters.class
.
[1] Технические детали, которые вам, вероятно, не нужно понимать: более десяти лет назад формат файла класса java был немного изменен, чтобы добавить некоторые подсказки о кадрах стека в самом файле класса. Верификатор — это то, что проверяет, является ли файл класса «действительным», и что выполнение файла класса не может привести к тому, что программисты на C обычно называют «дампом ядра» — путь выполнения, который нарушит безопасность системы и вызовет ваша программа будет немедленно принудительно удалена вашей ОС или проблема безопасности, если ОС не сможет ее обнаружить. Java обещает, что этого не может произойти, и верификатор класса является частью этого. Верификатору класса помогает эта регистрация кадра стека в файле класса: проверка правильности информации о кадре стека, а затем проверка того, что байт-код обращается только к той памяти, к которой ему разрешен доступ, намного проще и быстрее, чем проверка того, что байт-код обращается только к той памяти, к которой ему разрешен доступ без этой информации. В старых файлах классов может не быть этой регистрации, и в этом случае верификатор добавит ее за вас (но это занимает много времени, поэтому это требуется для более современных файлов классов). Таким образом, мы действительно все еще находимся на территории с ошибками: что бы ни заставило этот файл класса поместить версию файла класса, которая достаточно высока, чтобы требовались примечания кадра стека, но не добавил их, и, таким образом, верификатор отклоняет класс файл. В качестве альтернативы, поскольку это новость более чем 10-летней давности, возможно, в наши дни очень современная виртуальная машина больше не способна запускать очень старые файлы классов, потому что на этом этапе код «выяснения фрейма стека» был удален. Если это так, возврат к JDK8 может сработать, но вам действительно нужно решить эту проблему; вы используете код, который устарел более чем на 10 лет.
Благодарю за ваш ответ. (((: Я очень рад такому ответу. (: Спасибо.
Похоже, используемая вами версия Spring не соответствует требованиям для JVM. Правильный ответ, вероятно, обновить Spring.