【问题标题】:Sudden "java.lang.VerifyError: Expecting a stackmap frame at branch target"突然“java.lang.VerifyError:在分支目标处期望堆栈图帧”
【发布时间】:2017-02-22 13:56:28
【问题描述】:

今天发布时,我的 GlassFish 3.1 服务器出现错误。 我尽力利用我的互联网研究人员的技能来解决它​​,但几个小时后我决定在这里发帖:

所以我不得不重新安装我的服务器 GlassFish 3.1,这就是我的结尾:

2016-10-13T21:00:04.610+0900|Grave: Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method
java.lang.RuntimeException: EJB Container initialization error
    at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:246)
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:290)
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:101)
    at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
    at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:249)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:465)
    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:222)
    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.VerifyError: Expecting a stackmap frame at branch target 32
Exception Details:
  Location:
    com/tm/entities/Education._persistence_initialize_School_vh()V @4: ifnonnull
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0000000: 2ab4 00d0 c700 1c2a bb01 2259 2ab4 0110
    0000010: b701 24b5 00d0 2ab4 00d0 04b9 0128 0200
    0000020: b1                                     

    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:274)
    at com.sun.enterprise.deployment.util.TypeUtil.getMethod(TypeUtil.java:399)
    at com.sun.enterprise.deployment.MethodDescriptor.getMethod(MethodDescriptor.java:314)
    at org.glassfish.ejb.security.application.EJBSecurityManager.convertEJBMethodPermissions(EJBSecurityManager.java:550)
    at org.glassfish.ejb.security.application.EJBSecurityManager.loadPolicyConfiguration(EJBSecurityManager.java:256)
    at org.glassfish.ejb.security.application.EJBSecurityManager.initialize(EJBSecurityManager.java:317)
    at org.glassfish.ejb.security.application.EJBSecurityManager.<init>(EJBSecurityManager.java:190)
    at org.glassfish.ejb.security.factory.EJBSecurityManagerFactory.createManager(EJBSecurityManagerFactory.java:209)
    at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:233)
    ... 32 more

(以及另外 4 个“此位置的预期堆栈图帧”)

所以我所有的项目都使用 JDK 1.7: - 我以这种方式配置了服务器 - 我的项目是这样配置的

我尝试过: - 重新正确安装服务器 - Windows>Preferences>安装的JRE使用“-XX:-UseSplitVerifier”和/或“-noverify”

浏览过的页面:

java.lang.VerifyError: Expecting a stackmap frame at branch target JDK 1.7

java.lang.VerifyError: Expecting a stackmap frame

https://dzone.com/articles/javalangverifyerror-expecting

谢谢!

【问题讨论】:

  • 这门课的“教育”是什么?那么这个字段/方法 _persistence_initialize_School_vh 呢?字节码增强的结果?
  • Education 是一个持久性类(以@Entity 销售),方法_persistence_initialize_School_vh 确实由字节码生成
  • 所以字节码增强过程出现了JDK在使用等问题

标签: jsp jpa server publish


【解决方案1】:

好的,我终于迁移到 Glassfish 4 并在我的项目中使用 Java 1.8。

我在创建 JDBC 池连接时遇到了一些麻烦,因为 Glassfish 4.0 中存在错误,但互联网可以帮助我。

【讨论】:

    猜你喜欢
    • 2014-12-31
    • 2014-10-22
    • 2014-09-19
    • 2021-03-26
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多