jdk1.8中使用aspectjweaver报错 Invalid byte tag in constant pool 18
背景
(1)jdk 1.8
(2)aspectjweaver 1.6.10
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.10</version>
</dependency>
(3)在方法中使用jdk1.8新特性lambda表达式后,执行方法报错,报错如下:
org.aspectj.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 18
at org.aspectj.apache.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:192)
at org.aspectj.apache.bcel.classfile.ClassParser.parse(ClassParser.java:131)
分析
查看源码发现 1.6.10版本的aspectjweaver,读取class文件中的常量池出错,
不支持读取class文件常量池中的数据项:CONSTANT_InvokeDynamic_info(类型标志:18)
static final Constant readConstant(DataInputStream dis) throws IOException, ClassFormatException {byte b = dis.readByte();switch(b) {case 1:return new ConstantUtf8(dis);case 2:default:throw new ClassFormatException("Invalid byte tag in constant pool: " + b);case 3:return new ConstantInteger(dis);case 4:return new ConstantFloat(dis);case 5:return new ConstantLong(dis);case 6:return new ConstantDouble(dis);case 7:return new ConstantClass(dis);case 8:return new ConstantString(dis);case 9:return new ConstantFieldref(dis);case 10:return new ConstantMethodref(dis);case 11:return new ConstantInterfaceMethodref(dis);case 12:return new ConstantNameAndType(dis);}}
解决办法
升级aspectjweaver,使其支持读取新的数据项:CONSTANT_InvokeDynamic_info(类型标志:18)。比如升级到 1.8.9
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.9</version>
</dependency>
public abstract class Constant implements Cloneable, Node {protected byte tag;Constant(byte tag) {this.tag = tag;}public final byte getTag() {return this.tag;}public String toString() {return Constants.CONSTANT_NAMES[this.tag] + "[" + this.tag + "]";}public abstract void accept(ClassVisitor var1);public abstract void dump(DataOutputStream var1) throws IOException;public abstract Object getValue();public Constant copy() {try {return (Constant)super.clone();} catch (CloneNotSupportedException var2) {return null;}}public Object clone() throws CloneNotSupportedException {return super.clone();}static final Constant readConstant(DataInputStream dis) throws IOException, ClassFormatException {byte b = dis.readByte();switch(b) {case 1:return new ConstantUtf8(dis);case 2:case 13:case 14:case 17:default:throw new ClassFormatException("Invalid byte tag in constant pool: " + b);case 3:return new ConstantInteger(dis);case 4:return new ConstantFloat(dis);case 5:return new ConstantLong(dis);case 6:return new ConstantDouble(dis);case 7:return new ConstantClass(dis);case 8:return new ConstantString(dis);case 9:return new ConstantFieldref(dis);case 10:return new ConstantMethodref(dis);case 11:return new ConstantInterfaceMethodref(dis);case 12:return new ConstantNameAndType(dis);case 15:return new ConstantMethodHandle(dis);case 16:return new ConstantMethodType(dis);case 18:return new ConstantInvokeDynamic(dis);}}
参考文献
https://blog.csdn.net/chen051318/article/details/68927464
https://zhuanlan.zhihu.com/p/54755387?from_voters_page=true
jdk1.8中使用aspectjweaver报错 Invalid byte tag in constant pool 18相关推荐
- 使用maven插件整合ssm,启动tomcat系统报错 Invalid byte tag in constant pool: 19
今天在整合ssm框架做系统的时候,启动tomcat突然报错,错误显示 单纯看报错意思无法得知为什么会报这样的错误以及如何去解决这个问题.通过上网查询,得出竟然与我昨晚所学的lombok有关 我在 SS ...
- Invalid byte tag in constant pool: 18
网上有这个问题得解答,但是解决起来还是很麻烦 aspectj: Invalid byte tag in constant pool: 18 - 知乎 我来说是我得实践 首先这个问题在本地运行一直没问题 ...
- ClassFormatException:Invalid byte tag in constant pool: 18
使用@Aspectj 时遇到的问题 Caused by: org.aspectj.apache.bcel.classfile.ClassFormatException: File: 'com.ls.s ...
- JDK8: Invalid byte tag in constant pool: 18
JDK8: Invalid byte tag in constant pool: 18 问题 org.aspectj.apache.bcel.classfile.ClassFormatExceptio ...
- Tomcat报ClassFormatException: Invalid byte tag in constant pool: 19解决方法
[现象] 严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/work/demo/target/ROO ...
- Invalid byte tag in constant pool: 19
问题 tomcat启动时报错 Invalid byte tag in constant pool: 19 解决办法 办法一:请检查报错提示的jar包路径,删除该jar包对应的文件夹,重新执行打包即可. ...
- org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
启动项目: 问题描述 严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/.m2/myboot/org ...
- org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 60
今天发现一个很奇怪的问题:org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constan ...
- 出现 org.apache.tomcat.xxx.ClassFormatException: Invalid byte tag in constant pool: 15 异常的原因及解决方法
1 异常描述 最近,当我从 SVN 检出项目并正常配置完 Tomcat 之后,启动项目,总是报出如下异常: 2 异常原因 通过观察上述标记出来的异常描述,我们可以知道: org.apache.tomc ...
- Invalid byte tag in constant pool: 19 与 javax/el/ELManager问题解决
Invalid byte tag in constant pool: 19 与 javax/el/ELManager问题解决 参考文章: (1)Invalid byte tag in constant ...
最新文章
- [导入]使用tomcat5.0自带的连接池
- 【分享】Oracle 常用运维命令大全
- 直观展示卷积核(转)
- 程序的加载和执行(六)——《x86汇编语言:从实模式到保护模式》读书笔记26
- zenmap nmap输出无显示_双路显示控制仪XME-H80-1616价格报价
- Python使用三种方法批量修改记事本文件编码格式
- 21-hadoop-weibo推送广告
- class反编译成java_Java黑科技之源:JVMTI完全解读
- 手把手教你学习ROR-5.Validation
- Axure自动幻灯片制作
- tween andr_安装Android Studio并在Android Studio上创建新的Android项目
- 一维热传导方程求数值解
- 驱动人生:微软补丁如何修复CPU占用过高问题,Windows系统如何更新到win10
- 血管分割技术文献综述
- R语言中 attach()与detach(),及with()的使用
- sympy 求微分方程_Sympy常用函数总结
- 光圈,焦距,工作距离与景深之间的关系。
- 上海东方美谷JW万豪、福清喜来登、宁波杭州湾凯悦等酒店开业 | 中国酒店周刊...
- AMBA协议介绍(1)——APB协议
- 真正补肾黑芝麻秘传做法
热门文章
- 百度云盘不限速下载大文件(2021-11亲测有效)
- python+word+excel+ppt自动化办公教程_Python自动化办公之Word,全网最全看这一篇就够了...
- [异步图书].精通Python自然语言处理 pdf
- QGIS数据分析入门——Qgis下载及界面介绍(一)
- matlab车标识别,MATLAB车辆标识识别技术研究
- 《解密并行和分布式深度学习:深度并发分析》摘要记录
- ask调制流程图_bpsk调制原理
- blob类型视频测试(blob加密视频源地址)
- VS Code中适用于任何中文字体的中英文混合等宽显示的配置方案
- 100多套毕业论文答辩PPT模板百度网盘链接