有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    "I can't use .. to access the classes parent directory, and then the resources directory.

    为什么不呢?一直为我工作。例如,见this applet。不幸的是,它是受信任的(允许它跨站点访问),但是如果您运行的是Oracle JRE,您应该能够取消信任请求,以查看类似

    Accessing an URL from same site

    在此小程序中:

    底线是,小程序应该能够从主服务器上的任何位置获取资源,服务器将为其提供资源