Apusic應用服務器在啟動時報錯“文檔要求有且只有一個根元素”,一般是因為修改了config目錄下面的基于XML格式定義的配置文件,修改后沒有采用正確的格式保存而導致出現問題。
全部錯誤內容如下:
2007-09-11 13:28:16 致命 [apusic.server.Main] 裝載服務配置失敗。
javax.management.ServiceNotFoundException: 在分析 URL "file:/C:/Apusic/Apusic-4.0.3/config/apusic.conf" 時出現問題:
file:/C:/Apusic/Apusic-4.0.3/config/apusic.conf: line 1: 文檔要求有且只有一個根元素。
??????? at com.apusic.service.ServiceManager.loadServicesFromURL(Unknown Source)
??????? at com.apusic.server.J2EEServer.start(Unknown Source)
??????? at com.apusic.server.J2EEServer.startup(Unknown Source)
??????? at com.apusic.server.Main.main(Unknown Source)無法被XML Parser正確解析的原因分析如下:
×Apusic V4.0.3版本
情況分析:
使用記事本(Notepad)打開XML文件后采用UTF-8格式保存了文件,于是保存時會在文件前面自動增加EF BB BF三個字節的內容,作為Unicode的Signature,導致Apusic的XML解析器無法正確讀出從而報錯,但是無論采用何種編輯器打開文件都無法看到這三個字節,使得問題原因非常難以查找。
解決方案:
1. 最簡單的辦法就是找到那個配置文件,經常修改的就三個文件:apusic.conf、databases.xml、server.xml,例如上面的錯誤代碼中的就是apusic.conf文件;
2. 使用Notepad打開后,另存為ANSI的格式。
??? 或者,使用EmEditor打開后將文件另存,另存時將“Add a Unicode Signature”選擇取消,保存后就可以正常使用。
×Apusic V5.0版本
不存在這個問題。
另:其他XML解析中也可能出現這樣的錯誤,原理應該相同。?
????????這個是JDK的Bug,在最新的Apusic V4.0.3版本中已經修復。