Invalid byte tag in constant pool: 19 与 javax/el/ELManager问题解决

生产环境采用JDK1.8 + Tomcat 7.0.65,代码重构后启动报错,经排查是lombok和hibernate - validator与当前Tomcat 7版本不兼容所致。解决方案有lombok和hibernate - validator版本降级、升级tomcat8,建议采用后者,但需进行功能回归测试。

整个生产环境采用JDK1.8 + Tomcat 7.0.65

代码重构后,启动报错,主要异常如下:

严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/home/unisound/private_cloud_platform/device_center/apache-tomcat-7.0.65/webapps/device-center/WEB-INF/lib/lombok-1.18.2.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
ERROR localhost-startStop-1 (FrameworkServlet.java:502) - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/el/ELManager

 根据提示,明确是由于lombok 和 validatation校验框架引起的;

查看当前引入的jar包版本:

 <version.lombok>1.18.2</version.lombok>
 <version.validation-api>2.0.1.Final</version.validation-api>
 <version.hibernate-validator>6.0.9.Final</version.hibernate-validator>


        <!-- Bean Validator,验证参数 -->
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>${version.hibernate-validator}</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>${version.validation-api}</version>
        </dependency>
        <!-- lombok 自动生成 Setter/Getter 方法 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${version.lombok}</version>
        </dependency>

 

原来是因为lombok 和 hibernate-validator引起的,当前版本Tomcaat7是不支持滴。

解决方案:

1、lombok 和 hibernate-validator版本降级

<version.lombok>1.14.8</version.lombok>
<version.validation-api>2.0.0.Final</version.validation-api>
<version.hibernate-validator>5.4.3.Final</version.hibernate-validator>

2、升级tomcat8

 

强烈建议使用第二种方案!tomcat7的bug也可以解决掉,当然代价就是所有功能的回归测试。。。

转载于:https://www.cnblogs.com/huahua035/p/11172351.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值