**問題描述**
業務服務器部署在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中報庫文件已經加載