使用自定义classloader解决web工程的jar包冲突问题

本文介绍了如何通过自定义classloader解决web工程中poi2.x和poi3.x jar包冲突的问题。作者在WEB-INF下创建poilib目录存放poi3.x的jar包,并提供自定义类加载代码,以实现类发射机制调用word生成方法。同时,文章还指出由于未将自定义classloader设为单例导致的perm内存溢出问题,并给出了相应的解决单例模式的代码。
摘要由CSDN通过智能技术生成

1)起因

        在使用tomcat7工程时,需要生成word文件并下载,预使用poi3.x的jar包完成相关功能。

但是web工程中已经有了poi2.x的jar包,poi2.x的jar包被extremetable表格类控件使用,且不能用poi3.x代替。

这两个jar包相互冲突,web工程不可用。

2)使用自定义classloader加载不同的jar包解决冲突

    考虑到word文件生成功能使用不频繁,自定义classloader加载poi3.x的jar包,并且使用类发射机制调用word生成方法。

在WEB-INF下建立一个poilib的目录,放入poi3.x. 所需的4个jar包,

自定义类加载代码如下:

//1 取得指定目录下的所有jar包文件

String filesep=java.io.File.separator;

String jarpath = webappDir+"WEB-INF"+filesep+"poilib"+filesep;

List<String> filenames = new Arraylist<String>();

loopfiles(jarpath ,filesnames);

URL[] alljars = new URL[filenames.size()];

for (int i=0;i<filenames.size();i++){

  alljars[i] = new URL("file:"+jarpath+filenames.get(i));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值