0

这是我创建的一个小程序项目的目录结构。

Project
|____classes
|____src
|____resources
  • 小程序在src目录中。
  • 类存储在classes目录中。
  • 所有的图像、声音和其他东西都存储在resources目录中。

我的问题是,当我尝试将存储在resources目录中的图像加载到我的小程序(编译时位于类目录中)时,JVM 会引发一个AccessControlException. 我在 stackoverflow 中阅读了很多关于此的帖子,现在我明白了为什么会这样(保护用户不访问他的文件)。我还读到您可以编写策略文件来修复它或签名的 jar。

这就是我加载图像的方式:

Image image = getImage(getCodeBase(),"path/to/the/image/image.png");

我注意到,AccesControlException当我要加载的图像位于classes子目录之一时,不会出现这种情况。所以我不能..用来访问 classes父目录,然后是resources目录。有什么方法可以加载我的图像而不必将它们放在classes子目录中并且不使用策略文件或签名的 jar?

4

1 回答 1

1

“我不能..用来访问类父目录,然后是资源目录。

为什么不?一直为我工作。例如,参见这个小程序。不幸的是,它是受信任的(允许它到达跨站点),但是如果您正在运行 Oracle JRE,您应该能够Cancel通过信任请求看到类似..

从同一站点访问 URL

在这个小程序中:

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

于 2012-12-14T07:00:38.887 回答