问题描述:
知识库经过精简之后做成了一个hr的版本,两个版本都要求使用海量分词,这个分词工具是用jni进行包装的,于是很自然的在两个web的lib下面分别放了一个aplit.jar作为jni入口,后来发现使用搜索的时候总是只有一个能用,另一个在加载海量分词动态库的时候挂起,也就是java的System.loadLibary函数,而且有一个规律,第一次加载这个库的web可以正常使用
解决:
这很自然的让人想起是loadLibrary这个函数有问题,于是另写一个测试用例,在纯java环境下多次加载同一个库,没有发现问题,是不是tomcat环境问题呢?很自然的怀疑web环境和纯java环境的不同,在网上根据这个线索搜索了一下,果然找到是tomcat在加载jni库的时候出现问题,简单的的说就是tomcat不能多次加载同一个jni库,解决的办法要么只在tomcat的公共库目录下放一个,要么用代码控制库的加载,在每次加载前进行判断.
该文的地址如下: