当前位置: 首页 > 知识库问答 >
问题:

java.lang.VerifyError:在分支目标5处期望堆栈图帧

百里鸿祯
2023-03-14

我正在开发我的公司项目。

我有2个表。我用一个多-多个关系连接到这个表。我使用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处应为stackmap帧异常详细信息:位置:com/karcin/template/persistence/entities/TblAgentPropertyParameters。类$(Ljava/lang/String;)Ljava/lang/Class@0:aload_0原因:此位置应为stackmap帧。字节码:0x0000000:2ab8 00ef b04c bb00 f159 2bb6 00f6 b700 0x0000010:f8bf
异常处理程序表:bci[0,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

我怎样才能解决这个问题。?

共有1个答案

尚阳炎
2023-03-14

字节码生成的东西。要么是[A]被窃听了,这里乱七八糟,生成了一个无效的类文件,要么[B]非常陈旧1

解决办法是,嗯,修复那些乱七八糟的代码。如果这不是你的代码,那么向库提交一个bug。如果再也没有人维护它\_(ツ)_/哦,你运气不好。

无效的类文件是com/karcin/template/persistence/entities/TblAgentPropertyParameters。类

[1] 您可能不需要了解的技术细节:十多年前,java类文件格式做了一些更改,添加了一些关于类文件本身中堆栈框架的提示。验证器是检查类文件是否“有效”的东西,执行类文件不能导致C程序员倾向于称之为“核心转储”的情况——这是一种执行路径,它会破坏系统的安全性,并导致您的程序立即被操作系统硬杀死,或者如果操作系统无法检测到它,则会导致安全问题。Javapromise这不会发生,类验证器就是其中的一部分。类验证程序通过类文件中的堆栈帧注册得到帮助:验证堆栈帧信息是否正确,然后验证字节码是否只访问允许访问的内存,比验证字节码只访问允许它访问的内存而不访问这些信息要简单得多,速度也要快得多。较旧的类文件不允许注册,在这种情况下,验证器将为您添加它(但这需要很多时间,这就是为什么更现代的类文件需要注册的原因)。因此,我们实际上仍然处于错误的领域:无论是什么使得该类文件将一个类文件版本放入其中,该版本足够高,以至于需要堆栈帧注释,但没有添加它们,因此验证器拒绝了该类文件。或者,因为这是10年前的新闻,可能现在一个非常现代的虚拟机不再能够运行非常旧的类文件,因为此时“找出堆栈框架”代码已被删除。如果是这种情况,降级回JDK8可能会奏效,但您确实需要解决这个问题;你运行的代码已经过时10年了。

 类似资料:
  • 成功地编译了项目,并与Maven一起构建。这是我的第一个maven项目。但我不知道为什么会出现下面的错误。 在tomcat上部署war,点击我的url,并在我的浏览器中显示以下错误。 有人能提供一些信息吗?谢谢你的帮助。 配置:

  • 一个运行良好的应用程序项目已经开始在Android Studio中给出这个错误。我尝试过各种各样的事情,比如改变主楼的结构。xml文件、更改Google Play服务版本等,但没有任何帮助。这个错误出现在“显示”选项卡中,我尝试使用api 18进行查看。此外,由于某些原因,间隙广告的填充率已降至0,并且不会返回任何填充。 建筑格拉德尔

  • 升级到JDK 1.7后,我遇到了以下异常:

  • 我使用Cobertura进行代码覆盖,但在运行测试用例时,当我使用maven构建运行测试用例时,所有测试用例都失败了,错误如下。 但是,当我使用Eclipse作为JUnit命令运行相同的测试用例时,它工作得很好。

  • 使用jdk 1.8.051Source=1.7,target=1.7 Junit 4.6,ant 1.8.0 发生了什么事<所有以1.7通过的测试现在都失败了。我需要知道以下几点: 为什么会这样? 有没有像-XX:-UseSplitVeriator(java 1.7)这样的选项 如何找出问题的根源? 要采取什么步骤来解决这个问题? 我们有用于构建、部署和测试的ant目标 构建和部署工作正常,但Ju

  • 问题内容: 嗨,我正在jdk7更新2上使用maven 3.0.3和hibernate 4.0.0 Final release和spring 3.1进行maven测试。 我收到以下错误。 我的Equals方法使用commons-lang 2.6中的EqualsBuilder。我设置以下Maven选项 阅读此Java 7 JVM verifyError之后 注意:我的测试在jdk 1.6 update