**问题描述**
业务服务器部署在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的设置问题造成的。
- AnyChat 安装部署技术手册
- 第一章 AnyChat SDK基础知识
- 1.1 SDK 简介
- 1.2 SDK 分类
- 1.2.1 SDK 支持平台
- 1.2.2 SDK 版本功能
- 1.2.3 SDK 内容
- 1.3 AnyChat 运行环境
- 第二章 AnyChat SDK 安装部署
- 2.1 SDK 服务器架构
- 2.1.1 核心服务安装部署
- 2.1.2 业务服务安装部署
- 2.1.3 录像服务安装部署
- 2.1.4 核心与业务服务器分布式部署
- 2.1.5 服务器配置
- 2.2 SDK 服务器授权方式
- 2.2.1 绑定硬件特征码
- 2.2.2 绑定域名
- 2.2.3 绑定UKey
- 2.3 SDK 升级方式
- 2.3.1 客户端升级
- 2.3.2 服务器升级
- 2.4 服务器配置建议表
- 2.4.1硬件配置
- 2.4.2软件配置
- 2.5 视频质量的参数配置
- 2.5.1 分辨率、码率、帧率概念
- 2.5.2 分辨率、帧率、码率的配置对应表
- 2.6 视频质量下的带宽计算
- 2.6.1 带宽的影响因素
- 2.6.2 视频场景的带宽要求
- 2.7 录制文件尺寸表
- 第三章 常见问题
- 3.1 客户端不能连接
- 3.2 不同局域网之间不能音视频通讯
- 3.3 业务服务器不能连接核心服务器
- 3.4 录像服务器没有生成录像文件
- 3.5 不能枚举音视频采集设备
- 3.6 不能获取好友列表
- 3.7 业务服务器部署在tomcat中报库文件已经加载