无法获取小程序来读取文本文件
问题描述:
我试图让我的Java小程序从我的文本文件中读取,但是当我在浏览器中运行小程序时,我没有足够的privateleges来读取文件。 我试图使用策略文件,但我似乎无法让他们工作。无法获取小程序来读取文本文件
后来我试着
System.setProperty("java.security.policy", "*filelocation*");
,但我得到这个错误
java.security.AccessControlException: access denied (java.util.PropertyPermission java.security.policy write)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.System.setProperty(Unknown Source)
at BIT.init(BIT.java:35)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我能得到什么方面,我的小应用程序在浏览器中运行?它在Eclipse的applet查看器中工作正常。
答
原因在What Applets Can and Cannot Do内指定。它明确规定:
未签名的小程序仅限于安全沙箱 ,并且仅在用户接受小程序时才运行。通过来自认可证书颁发机构的证书签署 的小程序可以只在沙箱中运行,也可以请求在沙箱外运行的权限。无论哪种情况,用户都必须接受该小程序的安全 证书,否则该小程序将被阻止运行。
后来它指出:
沙箱的小程序无法执行以下操作:
- 他们不能访问客户端资源,如本地文件系统,可执行文件,系统剪贴板和打印机。
- 他们无法连接到任何第三方服务器或从任何第三方服务器检索资源(除了源自它的服务器以外的任何服务器)。
- 它们无法加载本机库。
- 他们不能更改SecurityManager。
- 他们无法创建ClassLoader。
- 他们无法读取某些系统属性。请参阅系统属性以获取禁用系统属性的列表。
了解如何在这里签字Applet的样子:How to Sign Applets Using RSA-Signed Certificates
答
你真的应该考虑签署小程序。
This(short!)常见问题讨论这两种政策和签名:
这里是offician文档:
http://docs.oracle.com/javase/6/docs/technotes/guides/security/doprivileged.html
http://docs.oracle.com/javase/tutorial/deployment/applet/security.html
这里是一个很好的(尽管旧)教程: