有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 694|回复: 0
收起左侧

[Java] 如何有效避免jar hell?

 关闭 [复制链接]

该用户从未签到

3

主题

37

好友

1万

积分

第一章

积分
11825
发表于 2013-5-2 17:40:37 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
不知道这边有没有从事J2EE工作的朋友?向大家请教下jar hell的一些检测或避免方法。

由于jboss或tomcat之类的容器加载class是随机的(理论上说是随机的,但通过实际观察,发觉和机器有很大关系,比如同样的类冲突在某些机器可以一直重现,而在某些机器则是基本重现不了),因此经常会出现应用在开发测试阶段一直没问题,但最后上线过程中却出现了类冲突等问题。为了避免类似的上线失败,因此想要了解下有没有完全避免jar hell的方法。

根据网上搜索的一些资料,自己在maven过程中通过插件检测同一个class是否存在与多个jar包是可行的,但这会导致检测到很多完全不相干的类。比如因为maven依赖的问题不同的jar会依赖一些相同的底层库,而其实这些类在我应用运行期间都不会被调用的(理论上都不会被classloader加载),这部分是很干扰视线的,因此在编译期间做这个检测并不是最佳的方法。

我的问题就是能不能在运行期有什么办法可以检测到这种潜在的类冲突问题?比如通过tomcat或jboss的某些配置、插件?或者自己能够继承classloader完成这个检测?(我曾经也做过这个尝试,但貌似由于默认双亲委派的策略,获取不到后续加载的类。其实我比较倾向于这种做法的,有没有什么比较tricky的做法能够实现?)


签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

本版积分规则

小黑屋|技术宅(基宅) ( 粤ICP备18082987号-1 | 浙公网安备 33010902001746号 )

GMT+8, 2024-5-19 00:57 , Processed in 0.174021 second(s), 11 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表