java是否仅在尝试访问代码库目录的父目录时在小程序中引发AccesControlException?
这是我创建的小程序项目的目录结构
Project
|____classes
|____src
|____resources
- 小程序位于
src
目录中李> - 这些类存储在
classes
目录中李> - 所有图像、声音和其他内容都存储在
resources
目录中李>
我的问题是,当我尝试将存储在resources
目录中的图像加载到我的applet(编译时它位于classes目录中)时,JVM会引发一个AccessControlException
。我在stackoverflow上读了很多关于这个的帖子,现在我明白了为什么会这样(为了保护用户不访问他的文件)。我还读到,您可以编写策略文件来修复它或签名JAR
这是我加载图像的方式:
Image image = getImage(getCodeBase(),"path/to/the/image/image.png");
我注意到,当我要加载的映像位于classes
子目录之一时,AccesControlException
不会被提升。因此,我不能使用..
访问classes
父目录,然后访问resources
目录。有没有什么方法可以加载我的图像而不必将它们放在classes
子目录中,也不必使用策略文件或签名JAR
# 1 楼答案
为什么不呢?一直为我工作。例如,见this applet。不幸的是,它是受信任的(允许它跨站点访问),但是如果您运行的是Oracle JRE,您应该能够取消信任请求,以查看类似
在此小程序中:
底线是,小程序应该能够从主服务器上的任何位置获取资源,服务器将为其提供资源