测试项目在tomcat7中启动失败,报错如下:

@794314bc3
Error during job execution (jobs.Bootstrap) Oops: VerifyError
~ play.Logger.niceThrowable(Logger.java:) ~ play ~
play.exceptions.UnexpectedException: Unexpected Error
at play.Invoker$Invocation.onException(Invoker.java:)
at play.jobs.Job.onException(Job.java:)
at play.jobs.Job.call(Job.java:)
at Invocation.Job(Play!)
Caused by: java.lang.VerifyError: Expecting a stack map frame
Exception Details:
Location:
controllers/payment/PaymentBaseAction.check()V @: nop
Reason:
Expected stackmap frame at this location.
Bytecode:
: b804 1c00 b801 8c9a 8e03 bd00
: 6bb8 a700 c700 b1b8 b800 794b
: 152a b804 2ab6 009e 3c13
: 1bb8 041a 001b aa00
: 007f
: 008b 2a4d 014e 2c13 02a2
: a413 02a6 b802 aac0 004f 4e2d b800
: 003e 2a4d 033e 2c13 02ab ac13
: 02ae b802 b0c0 b602 b33e 1d99
: 2a4d 014e 2c13 02b4 b513 02b7 b802
00000a0: b9c0 004f 4e2d b800 b800 acb8
00000b0: 00af a700 1bb8 00b2 a700 15b8 00b5 a700
00000c0: 0fb8 00b8 a700 09b8 00bb a700 03a7 000e
00000d0: 3a06 013a 05b8 041e bf01 3a05 b804
00000e0: 20b1
Exception Handler Table:
bci [, ] => handler:
Stackmap Table:
same_frame(@)
append_frame(@,Object[#])
chop_frame(@,)
same_frame(@)
same_frame(@)
same_frame(@)
same_frame(@)
same_frame(@)
same_locals_1_stack_item_frame(@,Object[#])
same_frame(@) at payment.PaymentProxy.init(PaymentProxy.java:)
at jobs.Bootstrap.initPayment(Bootstrap.java:)
at jobs.Bootstrap.doJob(Bootstrap.java:)
at play.jobs.Job.doJobWithResult(Job.java:)
at play.jobs.Job.call(Job.java:)
... more

原因:

jvm验证时出了错误:显示字节码错误: 
网上的解释是因为引入版本为51的字节码规范,使用了严格的类型检查器,任何工具修改了字节码的,都需要更新stackmap,但是jws修改了字节码,而没有更新 stackmap使用了即java的新特性,所以使用较高的版本进行编译时就会报这个错。

解决办法

在tomcat 7启动文件中或者系统环境变量中加入

export JAVA_OPTS=-XX:-UseSplitVerifier

在tomcat 8启动文件中或者系统环境变量中加入

export JAVA_OPTS=-noverify

tomcat 7 参数优化实例

JAVA_OPTS='-server
-Xms2048m
-Xmx2048m
-Xss512k
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:+UseParNewGC
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
-XX:+DisableExplicitGC
-XX:+UseConcMarkSweepGC
-XX:+UseFastAccessorMethods
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:+UseCMSInitiatingOccupancyOnly
-XX:-UseSplitVerifier'

附:在tomcat 8 ,JDK 1.8中,以上有些参数已被忽略或弃用,如下:

PermSize  忽略

MaxPermSize  忽略

UseCMSCompactAtFullCollection  弃用

- xx:ParallelGCThreads = N  如果处理器的数量预计将增加,那么你应该配置并行GC线程的数量来适当使用,N=处理器的个数

具体实例信息

[root@mytest ~]# /opt/apache-tomcat-8.5./bin/catalina.sh stop
Using CATALINA_BASE: /opt/apache-tomcat-8.5.
Using CATALINA_HOME: /opt/apache-tomcat-8.5.
Using CATALINA_TMPDIR: /opt/apache-tomcat-8.5./temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/apache-tomcat-8.5./bin/bootstrap.jar:/opt/apache-tomcat-8.5./bin/tomcat-juli.jar
OpenJDK -Bit Server VM warning: ignoring option PermSize=64m; support was removed in 8.0
OpenJDK -Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0
OpenJDK -Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
OpenJDK -Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel
GC threads appropriately using -XX:ParallelGCThreads=N

记一次tomcat7.0版本启动项目失败问题的更多相关文章

  1. Android 开发 8.0版本启动Service的方法

    前言  google在更新Android8.0后对Service的权限越发收紧.导致目前想要启动服务必需实现服务的前台化(否则在服务启动5秒后,系统将自动报错).下面我们就来看看如何在8.0上启动服务 ...

  2. 【推荐】CentOS安装Tomcat-7.0.57+启动配置+安全配置+性能配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Tomcat之前,请确保已经安装了JDK-1.7环境,具体见<CentOS安装JDK-1.7>. ...

  3. Redis 3.0版本启动时出现警告的解决办法

    原文:http://m.blog.csdn.net/article/details?id=50864933 Redis 3.0.7版本启动时出现警告的解决办法 发表于2016/3/12 12:52:4 ...

  4. IDEA环境Spring Boot 2.3整合Activiti 6.0,启动项目初始化表并创建核心服务

    如下步骤照着抄就完事了. 一.新建一个spring boot项目,并引入相关依赖 <?xml version="1.0" encoding="UTF-8" ...

  5. 关于V1.6.0版本的项目总结

    10月28号,我们开了1.6项目的总结大会,包括Ting总在内,前端.后台.运维都来参加总结大会了.虽然目标基本达成,但同时也暴露出很多问题,我们希望各方能够坐下来总结一下自己或者各个相关团队的功过是 ...

  6. Tomcat7.0无法启动解决方法[failed to start]

    很奇怪的一个问题,Tomcat一直好好的,运行Servlet之后就报这个错: 为什么呢?在网上查都查不到解决方法,后来仔细检查了下Servlet,发现web.xml有个低级错误: 配置的Servlet ...

  7. Spring Boot 2.1.7 启动项目失败,报错: "Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured."

    一开始按照网上的很多解决办法是: 启动类头部声明@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class}),但是这样会排除 ...

  8. tomcat7 启动项目报错 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()

    JDK版本:jdk1.8.0_77 Tomcat 版本:apache-tomcat-7.0.47 异常重现步骤: 1.完成项目部署 2.启动Tomcat 异常头部信息:java.lang.NoSuch ...

  9. nexus3.14.0版本linux环境安装、启动、搭建私库

    本文介绍的是nexus3.14.0版本在linux环境下安装.启动.搭建私库. nexus3以上的版本太新了,网上很少介绍安装细节的.据了解和2.X版本有所不同了. 1.前提 linux机器上需先安装 ...

随机推荐

  1. 联想Y7000安装Ubuntu16.04/Win10双系统,wifi问题,显卡驱动和CUDA10安装

    https://blog.csdn.net/la9881275/article/details/86720752 Ubuntu16.04系统安装拿到Ubuntu镜像制作装机优盘,这里就不写了.我的优盘 ...

  2. ESP8266 mDNS

    https://circuits4you.com/2017/12/31/esp8266-mdns/ 本教程介绍如何使用ESP8266进行多播DNS?在网络世界中,很难记住每个网站和计算机的IP地址,解 ...

  3. 工具 Windows安装Anaconda

    下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 安装 1.勾选添加Anaconda到PATH环境变量 2.配置清华镜像 conda ...

  4. Vue2.x源码学习笔记-Vue静态方法和静态属性整理

    Vue静态方法和静态属性,其实直接在浏览器中可以查看到的,如下 圈起来的是其静态属性,但是有的属性对象中的属性的值又是函数.未圈起来的则是函数. 其实它来自如下各个目录下的js文件 // src/co ...

  5. 从零开始搭建django前后端分离项目 系列五(实战之excel流式导出)

    项目中有一处功能需求是:需要在历史数据查询页面进行查询字段的选择,然后由后台数据库动态生成对应的excel表格并下载到本地. 如果文件较小,解决办法是先将要传送的内容全生成在内存中,然后再一次性传入R ...

  6. ML.NET 示例:多类分类之鸢尾花分类

    写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...

  7. python--map()、reduce()

    map()和reduce()是一种在处理大数据时的重要思想,在平时也可以利用.在python中内置了这两个方法,map取映射的意思,reduce取归纳的意思. 一.map() map(func, ls ...

  8. SQL Server 使用 Merge 关键字进行表数据同步

    简介 Merge关键字是一个神奇的DML关键字.它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小精悍:”根 ...

  9. 固态硬盘的PCIE,SATA,M2,NVMe,AHCI分别都指什么?别再搞混了

    原文:https://baijiahao.baidu.com/s?id=1616207956596122967&wfr=spider&for=pc 科技娱乐屋 18-11-0420:5 ...

  10. hdu1201,hdu6252差分约束系统

    差分约束系统一般用来解决a-b>=c的问题,有n个这样的限制条件,求出某个满足这些条件的解 可以将这个问题转化成最长路问题,即b到a的距离最少为c,而有多条b到a的路的话,我们就取最长的b到a的 ...