【发布时间】:2013-02-22 21:30:02
【问题描述】:
我正在使用 Java (eclipse) 编写游戏,并且我设法完全掌握了基础知识。我使用 .gif 文件作为游戏精灵并用
加载它们Image java.applet.Applet.getImage(URL url, String name)
在 Eclipse 下我的代码运行完美,但是当我将小程序添加到可运行的 JFrame 或将其嵌入到网站时,它会因错误而爆炸,尤其是
access denied("java.io.filepermission read")
在非常沮丧并在我能找到的每个论坛和教程上搜索了几个小时之后,我遇到了一个叫做沙盒错误的东西,我读过这意味着小程序无法访问该类所在的文件系统上的图像。
如果这是我遇到的错误,并且小程序无法访问文件或图像(这对我来说似乎很愚蠢,那么小程序的意义何在?)如果我无法加载,我该如何在小程序中使用图像它们来自文件?或者更重要的是,如何让我完美无错的代码在 Eclipse 之外运行,以便“分发”它?
【问题讨论】:
-
当您说它工作正常时,您的意思是它在您的计算机上工作正常并且网站是否驻留在您的开发箱以外的服务器上(即当您被拒绝访问时,小程序是网站的一部分在不同的机器上运行)?
-
我的意思是当我运行 eclipse 并告诉它编译和运行时,没有错误,但是当我尝试从嵌入式小程序(在本地保存的 html 文件上)运行它或将它添加到JFrame 并作为可执行文件运行,由于文件权限错误,它无法运行。
-
您始终可以将图像存储在与您的小程序代码库所在的主机相同的主机上。这种方式没有安全例外。否则,如果您考虑一下,这些图像不会存在于访问您 Applet 的每个人的机器上,对吧?即使没有沙箱,您当前的设置也无法正常工作。您的两个选择是 1)将图像托管在小程序代码库所在的服务器上,或 2)将图像部署在小程序 jar 本身中
-
您报告的许多事情都没有加起来。为了尽快获得更好的帮助,请发布SSCCE。只要 JRE 识别出 URL 指向本地服务器,
Applet.getImage(..)方法就适用于沙盒小程序。 “它会因错误而爆炸”,复制/粘贴它们而不是解释。