Hibernate 二级缓存 Snappy 报错,提示 maxCompressedLength(I)I
2016-04-27 16:20
543 查看
最近项目开发过程中遇到了一个问题:
应用启动的时候并没有报错,可以正常进入业务界面,但是点击登录等操作的时候就会报错,错误信息
java.lang.UnsatisfiedLinkError: org.xerial.snappy.SnappyNative.maxCompressedLength(I)I,
在网上搜了一下发现每个 Snappy 报错所抛出的底层代码都不一样。
再追踪一下错误信息,发现是Hibernate抛出来的。
有一种临时的解决方式是禁用Hibernate的二级缓存,但是试了几次以后发现这种方式并不能从根本上来解决问题。
项目组里面其他同事并没有出现这个问题,所以我这个问题可能不具有共性。
那么Hibernate是在哪个地方引用了这个jar包呢?
通过查看pom.xml文件找到jar包的依赖关系
原先的snappy并不是这个版本,在nexus上看到有好几个版本的snappy,而且当前这个是比较老的版本。
所以就抱着试一试的心态修改了 avro 的 pom.xml 文件,这个地方还有一个小问题:
默认的snappy版本是1.0.4.1,这个版本号的值是从hibernate-search-parent这个pom文件中取出来的,然而实际上这个包并没有引进来,可能是因为我们的nexus服务器上没有这个jar包的原因,这就导致了改了hibernate-search-parent的pom文件然而还是不起作用。
直接改了avro的pom文件,将版本号加上去就可以了。
这样就没有继续报错了 : )
应用启动的时候并没有报错,可以正常进入业务界面,但是点击登录等操作的时候就会报错,错误信息
java.lang.UnsatisfiedLinkError: org.xerial.snappy.SnappyNative.maxCompressedLength(I)I,
在网上搜了一下发现每个 Snappy 报错所抛出的底层代码都不一样。
再追踪一下错误信息,发现是Hibernate抛出来的。
有一种临时的解决方式是禁用Hibernate的二级缓存,但是试了几次以后发现这种方式并不能从根本上来解决问题。
项目组里面其他同事并没有出现这个问题,所以我这个问题可能不具有共性。
那么Hibernate是在哪个地方引用了这个jar包呢?
通过查看pom.xml文件找到jar包的依赖关系
原先的snappy并不是这个版本,在nexus上看到有好几个版本的snappy,而且当前这个是比较老的版本。
所以就抱着试一试的心态修改了 avro 的 pom.xml 文件,这个地方还有一个小问题:
默认的snappy版本是1.0.4.1,这个版本号的值是从hibernate-search-parent这个pom文件中取出来的,然而实际上这个包并没有引进来,可能是因为我们的nexus服务器上没有这个jar包的原因,这就导致了改了hibernate-search-parent的pom文件然而还是不起作用。
直接改了avro的pom文件,将版本号加上去就可以了。
这样就没有继续报错了 : )
相关文章推荐
- 浅析SQL Server中的执行计划缓存(上)
- Enterprise Library for .NET Framework 2.0缓存使用实例
- PowerShell中编程清空IE缓存方法
- PowerShell中使用.NET将程序集加入全局程序集缓存
- C#中缓存的基本用法总结
- Android实现图片异步加载并缓存到本地
- wap开发中如何有效的利用缓存减少消息的传送量
- PHP基于文件存储实现缓存的方法
- smarty缓存用法分析
- 引用全局程序集缓存内的程序集的方法
- asp Response.flush 实时显示进度
- C#实现清除IE浏览器缓存的方法
- ASP.NET缓存管理的几种方法
- PHP文件缓存类实现代码
- 清除aspx页面缓存的程序实现方法
- C#缓存之SqlCacheDependency用法实例总结
- jQuery数据缓存用法分析
- Jquery validation remote 验证的缓存问题解决方法
- IE9下Ajax无法刷新数据的缓存问题解决方法
- Ajax获取页面被缓存的解决方法