但是又怎么說得清堅(jiān)持的結(jié)果,道得盡堅(jiān)持的含義 |
下午,試用了SkinLF(http://www.l2fprod.com),感覺非常好,程序的外觀得到了很大的改善,還可以根據(jù)自己的需要隨意調(diào)整得到自己想要的外觀,但是要將SkinLF應(yīng)用到Web Start中還有點(diǎn)問題。這是因?yàn)椋瑆eb start使用到的資源必須包裝成jar文件,以
調(diào)試之后發(fā)現(xiàn),即使是在客戶端,在Eclipse中運(yùn)行的時(shí)候,如果不把themepack.jar定義到ClassPath中,也是無法加載的。
我想這是一個(gè)普遍的問題,根據(jù)我的理解,如果其他資源,比如圖片、xml文件、屬性文件等等能夠被加載,themepack.jar也應(yīng)該被加載。事實(shí)上應(yīng)該是這樣,但是關(guān)鍵在于SkinLF需要采用ZipInputStream解析zip(jar)文件,這時(shí)情況就不一樣了。具體的原因目前沒有搞清楚。
在網(wǎng)上找了半天,終于發(fā)現(xiàn)一個(gè)Open Source的組件:Rachel,使用它很輕易就可以解決上面提到的問題。
Rachel(http://rachel.sourceforge.net)是一個(gè)為解決Web start裝載資源困難而開發(fā)的組件。它提供了兩種方法解決資源裝載問題。
方法一,使用class://URL Handler。
這個(gè)方法采用新的URL協(xié)議:class://從jar文件中獲取資源。
Step 1,注冊新的URL Handler,以支持class://協(xié)議(protocal)。
例子:java.net.URL.setURLStreamHandlerFactory( new RachelUrlFactory() );
Step 2,采用class://協(xié)議構(gòu)造URL,從jar文件中讀取資源。
語法:class://
例子:
注意:這里,
Step 3,采用java.net.URL獲取資源。
例子:
方法二,在程序中嵌入多線程的,小型的http server。
Step 1,把你的資源放到j(luò)ar中。
Step 2,在每一個(gè)jar中增加一個(gè)anchor class,幫組server定位資源所在的jar文件,這點(diǎn)類似于方法一class://
例子:
CrossRefAnchor沒有任何的實(shí)際意義,只是為了幫組定義資源所在的jar。
Step 3,為每一個(gè)包含資源的jar用ClassResourceLoader注冊到WebResourceManager。
例子:
Step 4,啟動(dòng)Server。
例子:
Step 5,采用URL從server獲取資源。
例子:
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||