天天看點

在.jnlp檔案中使用"all-permissions"标簽的解決方案

 在.jnlp檔案中使用<all-permissions/> 标簽的解決方案

    當采用Java Web Start釋出程式時,在.jnlp檔案中使用如下的标簽時:

     <security> 

     <all-permissions/> 

   </security>

     那麼所有釋出的jar都需要被标記(signed),否則會産生如下的異常:

     JNLPException[category: 安全錯誤 : Exception: null : LaunchDesc:

.........

.........

</jnlp> ]

at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)

at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source)

at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)

at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)

at com.sun.javaws.Launcher.launch(Unknown Source)

at com.sun.javaws.Main.launchApp(Unknown Source)

at com.sun.javaws.Main.continueInSecureThread(Unknown Source)

at com.sun.javaws.Main$1.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

     解決方法如下所述(也可以參照JDK幫助文檔):

     你要采用下列方式運作toolkey工具:  

keytool -genkey -alias TestApplet -validity 365

這條語句将産生一個别名為TestApplet的密匙證書(key certificate),該證書将存儲在你的.keystore檔案中。Validity指的是密匙的有效期,預設是180,但是這裡我們需要一年的時間,是以我們設定為365。在Windows指令提示行視窗中運作這條語句,你會從keytool中得到大量需要回答的簡短問題,如下圖所示:

在.jnlp檔案中使用"all-permissions"标簽的解決方案

可能你已經了解到了,最重要的東西當然是密碼。你可以使用你自己的密碼,但是不要忘記它。我前面說過,建立信任APPLET是一個很簡單的操作,但是你要了解每一步的道理。這裡,我們幾乎已經完成了它的操作,但還是要針對keytool說幾句。我建議你多多注意它,閱讀keytool的手冊來了解每個參數的用法是有必要的,對于你深入了解它的特性是很有幫助的。好了,既然我們産生了我們自己的密匙,讓我們來做個簡單操作吧:僅僅用我們的密匙來設計我們的APPLET。使用下面的指令行(請改變目前目錄到TestApplet.jar存放的目錄):

jarsigner TestApplet.jar TestApplet

第一個參數是我們的jar檔案,第二個是上面剛剛建立的密匙别名(Key Alias)。jarsigner指令不是友好的,是以你将看不到任何資訊。

恭喜,你已經成功建立了你的第一個真正的簽名APPLET!我想你恨不得馬上嘗試一下它的功能吧,我也找不出任何理由不讓你這麼做。上傳或者僅僅拷貝你簽名的JAR檔案到放置你先前的TestApplet.html和TestApplet.jar的那個目錄中,然後覆寫TestApplet.jar檔案。在浏覽器中浏覽TestApplet.html。

然後你的Applet會加載,并顯示一個視窗,如下所示:

它詢問你是否接受或者拒絕這個簽名的APPLET。點選“No”将以舊的未簽名的版本來顯示APPLET,那樣它仍然位于“沙盒”中且對“外面的世界”有很多限制。點選“Yes”将以你的APPLET獲得更多的自由。   

繼續閱讀