次訪問applet都會彈出壹個警告對話框,大體的意思說是applet包含了不受信的代碼,提示妳是否要阻止運行,如果不細看提示,很容易就點擊了是,
結果applet就不會運行了。
通過看對話框中的提示,對applet中的所有jar都進行了簽名,再次訪問還是出現了警告對話框,再看,發現提示說applet中包含了簽名和未
簽名的代碼(資源)。我們知道java的簽名只會對jar包中的class進行簽名,而不會對其中的資源文件進行簽名,這就導致為什麽簽名了還是會出現警
告。於是到oracle官網去尋找答案,找到以下有用的鏈接:/javase/7/docs/technotes/guides/jweb/mixed_code.html
這篇文章裏面提到了兩種方法,分別是針對用戶和開發人員(或者部署人員的)。最終用戶可以通過修改控制面板中java的設置來處理applet如何
運行混合的代碼。另壹種針對開發人員的方式就是修改jar包中的清單文件(manifest )配置,可以通過設置兩個屬性Trusted-Only屬性
和Trusted-Library屬性來控制applet在瀏覽器的運行。
其中Trusted-Only針對那些不需要不受信控件的applet或application,設置了Trusted-Only不會去加載不受信的classes或者資源。
而相對應的Trusted-Library就是允許applet或application使用那些不受信的控件,同時不會彈出警告對話框。Trusted-Library會阻止受信任的組件去使用不受信任的組件。
通過上面的這些信息,已經找到了去掉對話框的辦法了,那就是修改applet使用到的所有jar包的manifest文件,添加Trusted-Library屬性,然後再簽名。
問題:在上面的過程中,遇到壹個問題就是壹個第三方的jar已經簽名了,這個時候妳修改了它的manifest文件,然後再簽名就會報錯,簽名失敗。這時可以刪除META-INF目錄中的.DSA和.SF文件,然後把MANIFEST.MF中的簽名信息手動刪掉,再次簽名即可。
MANIFEST.MF中的簽名信息格式如下:
Name: resources/language/lang.xml
SHA1-Digest: vC76jNzoYHDH4JE/oV+/gp92F9o=
至此問題解決。