🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**问题描述** 业务服务器部署在tomcat中,tomcat报 “anychatserver4java.dll already loaded in another class”错误。在开发环境中是可以运行,放到服务器上面部署就不行。 **问题分析** `anychatserver4java.dll already loaded in another classloader`异常是因为重复加载了`anychatserver4java.dll`库文件。 **解决方案** 提供`tomcat\conf`文件夹下配置文件`server.xml`进行分析,查看配置是否重复加载库文件。 例子如下: ~~~ <Host name="live.cn" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="BGChatLive" reloadable="true" debug="0"/> ~~~ 原因分析: ~~~ <Host name="live.cn" debug="0"** appBase="webapps**" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" **docBase="BGChatLive**" reloadable="true" debug="0"/> ~~~ 1.当为 Host 容器 设置了 appBase 属性时, Tomcat 会在启动时自动加载 appBase 指定目录下的所有合法工程; 2. 由于同时又通过 Context 的docBase 属性设置了Tomcat 默认工程, 所以,指定的 BGChatLive工程又会被加载一次 基于以上两点,造成了 BGChatLive工程的重复加载。 解决办法: 1. 新建一个目录专门用于存放工程, 如: E:\apache-tomcat-6.0.20\project 2. 将工程存放到以上目录下:即:E:\apache-tomcat-6.0.20\project\BGChatLive 3. 在 Context 容器中设置 docBase 属性, 如: `<Context path="" docBase="E:\apache-tomcat-6.0.20\project\BGChatLive" />` 注意:记得把webapps目录下的原项目删除。 **知识点提炼** `anychatserver4java.dll already loaded in another classloader`异常是因为重复加载了`anychatserver4java.dll`库文件,是由于Tomcat的设置问题造成的。