jar依赖版本不一致导致的诡异情况
来源:互联网 发布:mysql查询笔试题及答案 编辑:程序博客网 时间:2024/06/04 19:53
在服务器上编一个b.jar之后,测试b.jar包的功能遇到一个很奇怪的错误
java.lang.NoSuchMethodError: xxx.CDataOutputStream.writeVLong(JLjava/io/DataOutput;)I
Caused by: java.lang.NoSuchMethodError: xxx.CDataOutputStream.writeVLong(JLjava/io/DataOutput;)I
at yyy.Foo.writeFields(Foo.java:273)
注:Foo.writeFields是一个自定义的序列化方法。实际调用的是xxx.CDataOutputStream.writeVLong(long value,java.io.DataOutput output)
情形:
将程序b.jar下载到本地运行也会出现此次异常。通过反编译工具比对Foo.class文件和本地的Foo.class,发现2者代码几乎一样(换行不一样),而且在本地debug过程中,运行到xxx.CDataOutputStream.writeVLong(long value,java.io.DataOutput output)时,代码显示的也是writeVLong(long value,java.io.DataOutput output),而不是writeVLong(java.io.DataOutput output)。最后发现是b.jar 的编译依赖的一个jar版本与运行时依赖的版本不同导致的---理论上如果版本不同,低版本环境上运行,会抛出version的错误,而不是NoSuchMethod的异常。
问题定位困难在于:在定位问题过程中,通过反编译工具发现Butter.class都是一样的,在很大程度上误导查寻问题的角度。在本地调试过程中,也是因为源码都一样,导致误导。
- jar依赖版本不一致导致的诡异情况
- Struts2 版本不一致导致的问题
- 关于多线程导致数据不一致的情况的思考
- 查找maven依赖的jar mvn dependency:tree解决多项目多引入jar包版本导致的问题
- Android依赖库版本不一致
- JDK版本不一致导致导入的项目报错
- ADT和SDK版本不一致导致的问题
- 由pthread库版本不一致导致的段错误
- kafka版本不一致导致的一个小问题(二)
- maven-jar-plugin maven-dependency-plugin 打包依赖包版本不一致解决办法
- maven中jar不同版本的依赖
- 使用JMX监控WebLogic因classpath中jar包顺序导致的一些诡异问题
- C一些诡异的情况
- 模块依赖情况下的jar包构建(一)
- eclipse工作区间和依赖jar编码不一致,引起的乱码问题
- java.lang.UnsupportedClassVersionError jar版本不一致错误
- MySQL主从不一致的情况
- ChromeDriver和chrome浏览器的版本不一致导致的UI自动化问题
- 一个巧妙的自定义UITableViewCell的办法
- 如何查看common lisp函数的文档?
- 广义容斥原理
- SQL SERVER STATISTICS
- Visual Studio error C4335: 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式解决
- jar依赖版本不一致导致的诡异情况
- 变量前面没有加数据类型出现的错误。
- 说出来不好意思:从学C++开始,到现在8年了,才知道的using还有这种用法。
- 改变自己
- hibernate面试题 --- Hibernate是如何延迟加载的
- Linux进程间通信源码剖析,共享内存(shmget函数详解)
- android菜单详解五:菜单的其它特性
- 尊敬的CSDN会员
- Intent的实现策略