Java Applet如果需要访问本地的受限资源,需要对访问的代码进行数字签名才能进行。Java SE 19 release或者以后的版本为了Applet的安全性,当所执行的Applet代码既包括已签名的代码也包括未签名的代码时,将会抛出一个提示对话框,提示用户所执行的代码包含未签名的,是否需要阻止未签名的代码执行,提示对话框下图所示,如果用户点击Yes,有可能会导致程序运行失败,因为需要的类找不到。
从用户角度和开发部署人员角度来看,分别有不同的解决方法。
- 对于用户来说,可以通过Java Control Panel中的Advanced->Mixed code中的相应选项进行设置。
- 对于开发部署人员来说可以通过如下的方法进行解决:
- 使用Jar中的Manifest文件中的Trusted-Only属性和Trusted-Library属性进行设置:Trusted-Only:true的话只允许已签名的代码运行,阻止所有未签名代码;Trusted-Library则允许未签名的代码运行。
- 将Jar全部签名,我觉得这也是比较好的办法,容易实施,而且能够保证更加安全。
详细信息见:Mixing Signed and Unsigned Code .