亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用腳本文件(jnlp)來發(fā)布Java程序

系統(tǒng) 2068 0
本文為原創(chuàng),如需轉(zhuǎn)載,請注明作者和出處,謝謝!

發(fā)布Java程序(桌面程序)最直接的方法就是將jar文件打包交給用戶。不過有時jar文件很多,也很大。為了方便,sun提供了另外一種方式來通過網(wǎng)絡(luò)發(fā)布Java程序。這就是jnlp文件。可能很多讀者曾經(jīng)下載過很多jnlp文件,運行后會自動從指定的網(wǎng)站下載相應(yīng)的文件。
實際上,jnlp文件就是一個xml格式的腳本文件。假設(shè)我們有一個test.jar文件需要安裝(該文件是一個基于SWT的桌面程序),那么要使用jnlp文件發(fā)布test.jar需要如下幾步:

一、為test.jar文件簽名
從網(wǎng)絡(luò)上下載就意味著風險大大增加,因此,要想通過jnlp從網(wǎng)絡(luò)上下載jar文件,并運行,就需要對該文件進行簽名。如果不簽名,java程序?qū)⑦\行在sandbox中,也就是說無法訪問本地資源,由于test.jar是swt程序,需要訪問本地的dll(windows)或.so(linux)庫,所以必須要對test.jar進行文件簽名。
簽名需要一個證書,如果沒有證書,可以使用如下的命令生成一個證書

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> keytool - genkey - aliasnokiaguy - validity 12345 - keypassnokiaguypass - storepassnokiaguypass
- keystorenokiaguy.keystore - dname " CN=nokiaguy,OU=nokiaguy,O=D,L=CA,S=CA,C=CN "

在執(zhí)行上面的命令后,會在當前目錄下生成一個nokiaguy.keystore文件。然后將test.jar復制到當前目錄下。現(xiàn)在當前目錄有兩個文件:nokiaguy.keystore和test.jar。最后使用如下的命令對test.jar簽名:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> jarsigner - keystorenokiaguy.keystore - storepassnokiaguypass - keypassnokiaguypasstest.jarnokiaguy

在執(zhí)行完上面的命令后,我們會發(fā)現(xiàn)test.jar文件的尺寸變大了。

二、建立虛擬目錄

下面就是在自己的機器上或服務(wù)器建立一個可訪問的虛擬目錄。本文使用了IIS建立一個虛擬目錄,可通過http://200.200.200.200/key訪問該目錄,在該目錄下只有一個test.jar文件(經(jīng)過簽名后的jar文件)。

三、編寫jnlp文件
在任意目錄下建立一個test.jnlp文件,并輸入如下內(nèi)容:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> <? xmlversion="1.0"encoding="utf-8" ?>
< jnlp spec ="1.0+" codebase ="http://200.200.200.200/key" >
< information >
< title > CustomSWT </ title >
< vendor > nokiaguy.blogjava.net </ vendor
< homepage href ="index.html" />
</ information >
< security >
< all-permissions />
</ security >
< resources >
< j2se version ="1.6.0" />
< jar href ="test.jar" />
</ resources >
< application-desc main-class ="CustomMain" />
</ jnlp >


其中<jnlp>根元素通過codebase指定了虛擬目錄的url。通過<jar>元素指定了要下載的test.jar文件。如果存在多個jar文件,可以有多個<jar>元素。<jar>元素的href屬性指定要下載的jar文件,該文件路徑是相對于codebase屬性值的。如果要考慮不同的操作系統(tǒng),可以將多個<resources>元素,如下面的代碼所示:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> < resources os ="Windows" >
< jar href ="win32/swt.jar" />
< nativelib href ="win32/swt-native-lib-win32.jar" />
</ resources >
< resources os ="Linux" >
< jar href ="linux/swt.jar" />
< jar href ="linux/swt-pi.jar" />
< nativelib href ="linux/swt-native-lib-linux.jar" />
</ resources >

要注意,必須使課堂<application-desc>元素指定要運行的主窗口的類名(帶包名),由于本文使用的test.jar文件中主窗口類沒有名,類名為CustomMain,因此,只main-class屬性值為CustomMain。

運行test.jnlp,一開始會顯示如圖1所示的歡迎界面。

圖1
然后會出現(xiàn)如圖2所示的界面。
圖2
不過讀者不要擔心,這不是錯誤,而是說我們使用的證書并不是Sun支持的(而是我們自己生成的),因此,會出現(xiàn)這個證書提示(如果使用Sun支持的證書就不會出現(xiàn)這個異常,但要花錢的哦!)。選中“始終信任此發(fā)行者的內(nèi)容”復選框,單擊“運行”按鈕,就會下載test.jar文件,并運行程序。再次運行test.jnlp文件,就會直接運行程序了(不會再出現(xiàn)圖2的對話框)。
如果這時服務(wù)端更新的test.jar,test.jnlp會自動檢測程序文件的更新時間,如果服務(wù)端程序更新,則會重新下載該程序,并運行。因此,使用jnlp文件也可以實現(xiàn)實時更新程序的功能。有些象微軟的smartclient。在更新服務(wù)端程序時,千萬別忘了對程序進行簽名啊,如果不簽名,在運行jnlp文件時就會出現(xiàn)如圖3所示的異常信息。
圖3
實際上,jnlp文件默認情況下將test.jar文件下載到C:\Documents and Settings\Administrator\Application Data\Sun\Java\Deployment\cache目錄中。但文件名并不是test.jar,讀者可以在該目錄中查找所有的文件,并找與test.jar文件的大小一樣的文件即可(一共也沒多少文件,很好找)。如文件名為27a940d-69feaa17。如果服務(wù)端和客戶端cache中的程序一樣新或沒有客戶端的新,則jnlp會直接運行客戶端cache中的程序。
最后提一下,jnlp也是需要使用jre的哦,在使用jnlp之前,別忘了安裝jre啊!



國內(nèi)最棒的Google Android技術(shù)社區(qū)(eoeandroid),歡迎訪問!

《銀河系列原創(chuàng)教程》 發(fā)布

《Java Web開發(fā)速學寶典》 出版,歡迎定購

使用腳本文件(jnlp)來發(fā)布Java程序


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产在线视频资源 | 欧美日韩成人 | 奇米视频777 | 亚洲精品久久久久影 | 久久91精品国产一区二区 | 人人揉揉香蕉大免费不卡 | 精品欧美日韩一区二区三区 | 国内精品视频在线播放一区 | 99久久久精品| 久久久久久久久久久9精品视频 | 天天天做天天天天爱天天想 | 四虎影院入口 | 国产一级淫片a视频免费观看 | 亚洲视频一区二区 | 国产综合视频在线 | 一级毛片真人免费观看 | 久草综合视频在线 | 国内自拍网红在线综合 | 夜色成人免费观看 | 亚洲综合成人网在线观看 | 特级黄色毛片 | 久久福利一区二区三区 | 丁香狠狠色婷婷久久综合 | 愉拍自拍视频在线播放 | sea8国产精品视频 | 中文字幕亚洲欧美日韩高清 | 91九色视频无限观看免费 | 日韩久久精品视频 | 九天玄帝诀免费完整观看 | 婷婷亚洲视频 | 亚洲最大在线视频 | 国产成在线人视频免费视频 | 超级乱淫视频播放日韩 | 一级特黄特色aa大片 | 99r精品视频 | 婷婷第四色| 草久视频在线 | 午夜91视频| 成人国产在线不卡视频 | 国产真实乱子伦精品视 | 欧美色视频在线观看 |