Spring如何載入XSD檔案

2023-02-09 02:24:03 字數 1937 閱讀 9054

本文原文連線: ,**請註明出處!有時候你會發現過去一直啟動正常的系統,某天啟動時會報出形如下面的錯誤:

parseexception: schema_reference.4:

failed to read schema document '', because 1) could not find the document; 2) the document could not be read; 3) the root element of the docum

很顯然,spring xml配置檔案中指定的xsd檔案讀取不到了,原因多是因為斷網或spring的官網暫時無法連線導致的。 你可以通過在瀏覽器輸入xsd檔案的url,如: 進行確認。

關於這個問題,網上有兩種常見的解決方法,第一種簡單有效,但是工作量大,即:,例如:classpath:

org/springframework/beans/factory/xml/ ,再有一種方法就是在本機搭建web伺服器,按url建立相應資料夾,放入對應xsd檔案,在本機hosts檔案中加入"127.0.0.

1 ".實際上,這兩種方法都屬於「歪打正著」式的方法,直正弄明白這一問題還需要從spring的xsd檔案載入機制談起。

首先:你必須知道一點:spring在載入xsd檔案時總是先試圖在本地查詢xsd檔案(spring的jar包中已經包含了所有版本的xsd檔案),如果沒有找到,才會轉向去url指定的路徑**。

這是非常合理的做法,並不像看上去的那樣,每次都是從站點**的。事實上,假如你的所有配置是正確定的,你的工程完全可以在斷網的情況下啟動而不會報上面的錯誤。spring載入xsd檔案的類是pluggableschemaresolver,你可以檢視一下它的原始碼來驗證上述說法。

另外,你可以在檔案中加入:

通過日誌了解spring是何載入xsd檔案的。

接下來,問題就是為什麼spring在本地沒有找到需要的檔案,不得不轉向****。關於這個問題,其實也非常簡單。在很多spring的jar包裡,在meta-inf目錄下都有乙個這是乙個property檔案,其內容類似於下面:

....實際上,這個檔案就是spring關於xsd檔案在本地存放路徑的對映,spring就是通過這個檔案在本地(也就是spring的jar裡)查詢xsd檔案的。那麼,查詢不到的原因排除url輸入有誤之外,可能就是宣告的xsd檔案版本在本地不存在。

一般來說,新版本的spring jar包會將過去所有版本(應該是自2.0以後)的xsd打包,並在檔案中加入了對應項,出現問題的情況往往是宣告使用了乙個高版本的xsd檔案,如3.0,但依賴的spring的jar包卻是2.

5之前的版本,由於2.5版本自然不可能包含3.0的xsd檔案,此時就會導致spring去站點**目標xsd檔案,如遇斷網或是目標站點不可用,上述問題就發生了。

但是,在實現開發中,出現上述錯誤的幾率並不高,最常見的導致這一問題的原因其實與使用了乙個名為「assembly」的m**en打包外掛程式有關。很多專案需要將工程連同其所依賴的所有jar包打包成乙個jar包,m**en的assembly外掛程式就是用來完成這個任務的。但是由於工程往往依賴很多的jar包,而被依賴的jar又會依賴其他的jar包,這樣,當工程中依賴到不同的版本的spring時,在使用assembly進行打包時,只能將某乙個版本jar包下的檔案放入最終打出的jar包裡,這就有可能遺漏了一些版本的xsd的本地對映,進而出現了文章開始提到的錯誤。

如果你的專案是打成單一jar的,你可以通過檢查最終生成的jar裡的檔案來確認是不是這種情況。而關於這種情況,解決的方法一般是推薦使用另外一種打包外掛程式shade,它確實是一款比assembly更加優秀的工具,在對檔案處理上,shade能夠將所有jar裡的檔案進行合併,在最終生成的單一jar包裡,包含了所有出現過的版本的集合!

以上就是spring載入xsd檔案的機制和出現問題的原因分析。實際上,我們應該讓我們工程在啟動時總是載入本地的xsd檔案,而不是每次去站點**,做到這一點就需要你結合上述提及的種種情況對你的工程進行一番檢查。

如何整理檔案

檔案整理是指將處於零亂的和需要進一步條理化的檔案,進行基本的分類 組合 排列 編號 編制目錄 建立全宗等,組成有序體系的過程。檔案整理的基本要求 遵循檔案材料的形成規律和特點,保持檔案材料之間的有機聯絡 區分檔案材料的價值,確定檔案的保管期限 便於保管和利用。檔案整理的檔案範圍是 凡是本機關工作活動...

加密檔案 PDF檔案如何設定密碼

pdf文件可分別設定開啟文件密碼和文件安全密碼,兩個密碼不能使用同乙個密碼。開啟文件密碼無密碼則無法開啟文件。文件安全設定可實現禁止各種修改和是否允許列印的設定。pdf文件的安全設定如下 用adobe acrobat professional軟體開啟pdf文件,在 檔案 欄內開啟 文件屬性 圖1 圖...

如何在桌面上建立無載入項的IE瀏覽器圖示

開啟internet explorer瀏覽器,瀏覽網頁速度緩慢或提示ie應用程式錯誤的資訊,傳送這些問題都有可能是錯誤的載入項導致的,那麼我們可以在沒有載入項的情況下執行internet explorer來排除問題。方法11.單擊 開始 單擊 所有程式 單擊 附件 單擊 系統工具 2.在下一級選單中...