我在Linux上的Tomcat中运行了一个Web应用程序。我的webapp使用第三方jar,jar使用本机库。
每当我重新部署我的应用程序时,Tomcat都会注意到新的war文件并重新加载我的应用程序。但是,它显然没有卸载以前的版本,当我尝试执行使用jar的代码时,我收到此错误:
java.lang.UnsatisfiedLinkError:本机库/var/cache/tomcat7/temp/libaocr_x64.so已经加载到另一个类加载器中
如果我重新启动整个Tomcat进程,我可以清除错误,但我不想这样做。
是什么导致Tomcat不发布旧版本的应用程序?
我知道这种问题有时是由连接池引起的,这些连接池有线程运行来监控连接 - 我的应用程序中有连接,但我不认为它是配置为运行此类线程。
谢谢, 弗兰克
答案 0 :(得分:0)
JNI是如此低级,以至于它不在Tomcats Container之外。不幸的是你无法卸载图书馆。
尝试将jar放入tomcat的endorsed-folder($CATALINA_HOME/commons/endorsed
),但它将可用于tomcat中的每个应用程序。