Hibernate 4.2.8,javassist 3.18.1和ClassCastExceptions –注意您的类路径

我写这篇文章是作为提示和警告,而不是绝对的解决方案。 我将尝试针对我的案例(WebSphere 8.5.5)返回一种解决方法,但是我确信其他开发人员和应用程序也会受到影响。 我已经花了一些时间来找出问题的原因,所以暂时,这篇文章将有助于增加上述关键字的搜索索引,并链接到休眠问题跟踪器。

在当前正在进行的项目中,由于Hibernate ORM 4.2.0版库中的错误,我决定在安装程序中将库版本向前移动并升级到最新版本。 Hibernate当前以版本4.2.8作为最新的JPA 2.0兼容版本,而4.3.0是第一个正式的JPA 2.1兼容。 由于我正在开发Jee6版本,因此我选择升级到4.2.8。

最终在4.2.8及更高版本中,库中实现了“ 严重的 ”内部API更改。 Hibernate迁移到javaassist的新版本,该版本引入了一些新的内部API调用和接口。 请参阅此处的链接问题。 因此,版本4.2.8将作为javassist- 3.18.1-GA的依赖项获取到您的应用程序。

最终,如果您碰巧引入了

  • 对Javassist版本的多个依赖
  • 一个容器通过“父级”类加载器为您的耳朵/战争提供了较旧的版本

然后,您将遇到类似这样的问题。 简而言之,如果您的容器中的活动类加载器偶然捕获了旧版本的javassist,则在加载jpa实体或执行相关代码时,您很可能会遇到奇怪的类强制转换异常或“未找到类”异常指向到过时的javassist API。

恕我直言,此更改应该已经引入到Hibernate的“主要”版本中,但是我很明白,有时开发人员的需求不能由全球开发人员用户社区的不同需求和设置来强制要求。 因此,这只是我对“应该存在”的看法,我仍然认为Hibernate是最好的Java ORM。

如果您遇到这种情况,请先采取以下措施:

  • 检查您的可部署jar依赖项,并找到Javassist的任何其他实例,尤其是较旧的版本-根据您的容器和类加载设置检查如何加载它们。
  • 如果您没有明确包括任何额外的依赖项,并且唯一的实例是“从休眠中获取”的实例(如我的案例),那么您需要检查是否从应用程序或服务器级共享库中加载了较旧版本的javassist或从应用程序服务器中的“共享”类加载器。 (我仍在为Websphere 8.5.5进行这一工作)。 您可以尝试共享库的加载顺序或类加载模式(父​​项优先/父项末次)
  • 如果您找不到基于以上两点的解决方案,或者您尝试在应用程序上尝试使用类加载策略,并且证明确实很麻烦,那么只需切换到版本4.2.7 ,这似乎是最后一个解决方案。向后兼容旧版本的Javassist。

如果您是JBoss EAP 6.2和JBoss Wildfly 8用户,那么您会很安全,这意味着这些容器已经带有“最新” javassist版本,但是您仍然需要对应用程序可能引入的任何潜在冲突版本进行分类。

希望我会为我的情况提供解决方法。


翻译自: https://www.javacodegeeks.com/2014/01/hibernate-4-2-8-javassist-3-18-1-and-classcastexceptions-watch-out-your-classpath.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FFmpeg 4.2.8是一个开源的多媒体处理工具库,可以用于处理音频和视频文件。它提供了丰富的功能和命令行选项,可以对音频和视频进行各种操作。 引用提供了在FFmpeg中将视频加速到2倍速的命令行示例。使用此命令,您可以将一个视频文件的播放速度加快到原来的两倍。 引用提供了将视频减速到一半速度的命令行示例。使用此命令,您可以将一个视频文件的播放速度减慢到原来的一半。 引用提供了一个示例,展示了如何将音频和视频文件合并为一个输出文件。使用此命令,您可以将一个视频文件和一个音频文件合并为一个包含视频和音频的文件。 总结而言,FFmpeg 4.2.8是一个功能强大的多媒体处理工具库,可以用于处理音频和视频文件。您可以使用不同的命令行选项来实现各种操作,例如加速、减速和合并音视频文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ffmpeg常用指令及介绍(转码 水印 字幕 截图等)](https://blog.csdn.net/megary/article/details/90667975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值