Java 当试图访问代码库目录的父目录时,是否仅在小程序中引发AccesControlException?
这是我创建的小程序项目的目录结构Java 当试图访问代码库目录的父目录时,是否仅在小程序中引发AccesControlException?,java,applet,accesscontrolexception,Java,Applet,Accesscontrolexception,这是我创建的小程序项目的目录结构 Project |____classes |____src |____resources 小程序位于src目录中 这些类存储在classes目录中 所有图像、声音和其他内容都存储在resources目录中 我的问题是,当我尝试将存储在resources目录中的图像加载到applet(编译时它位于classes目录中)时,JVM会引发AccessControlException。我在stackoverflow上读了很多关于这个的帖子,现在我明白了为什么会这样
Project
|____classes
|____src
|____resources
- 小程序位于
目录中src
- 这些类存储在
目录中classes
- 所有图像、声音和其他内容都存储在
目录中resources
resources
目录中的图像加载到applet(编译时它位于classes目录中)时,JVM会引发AccessControlException
。我在stackoverflow上读了很多关于这个的帖子,现在我明白了为什么会这样(为了保护用户不访问他的文件)。我还读到,您可以编写策略文件来修复它或签名JAR
这是我加载图像的方式:
Image image = getImage(getCodeBase(),"path/to/the/image/image.png");
我注意到,当要加载的映像位于类
子目录之一时,不会引发AccesControlException
。因此,我不能使用。
访问类
父目录,然后访问资源
目录。是否有任何方法可以加载我的图像,而不必将它们放入classes
子目录,也不必使用策略文件或签名JAR
“我无法使用。
访问classes父目录,然后访问resources目录
为什么不呢?总是对我有用。例如,请参阅。不幸的是,它是受信任的(允许它跨站点访问),但如果您运行的是Oracle JRE,您应该能够取消信任请求,以查看类似
在此小程序中:
- HTML位于(->index.HTML)
- 代码和代码库位于
- 源(资源)位于中
底线是,小程序应该能够从主服务器上的任何位置获取资源,服务器将为其提供资源。感谢您的回复。每次我尝试访问“类”时“在父目录中,oracle jvm引发AccessControlException。也许这与我没有在浏览器中运行applet有关。相反,我使用msdos.Aha中的appletviewer命令行!这就是问题所在。小程序查看器过去没有沙盒,但现在有了,它甚至比网站上的沙盒更紧,原因很简单。
SecurityManager
无法从文件系统中判断站点的“根”在哪里,因此它采取了一种预防措施,只允许子目录被视为“主站点”。至少,这是我在使用它时所能想到的最好结果。是时候在浏览器中进行测试了,离开本地服务器。你是正确的。我在浏览器中测试了小程序,可以访问“类”父目录。谢谢你的帮助!