【问题标题】:how to properly use images files (gif) on java applets?如何在 Java 小程序上正确使用图像文件 (gif)?
【发布时间】: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(..) 方法就适用于沙盒小程序。 “它会因错误而爆炸”,复制/粘贴它们而不是解释。

标签: java eclipse image


【解决方案1】:

默认情况下,小程序无法访问本地文件系统。 Java Tutorial 告诉您如何在小程序中正确使用图像。

【讨论】:

    【解决方案2】:

    您可以通过以下几项检查图像在服务器上的存储位置?哪些用户是这些图像的所有者,该用户与运行 Web 服务器的用户不同吗?如果是这样,我会更改图像的权限和图像所在的目录,以便它们包含对运行 Web 服务器的用户的读取访问权限。

    在 Stackvoerflow 上提出了类似的问题: how to provide access permission for applet to write on file system

    正如另一张海报所提到的,您似乎必须确保您的小程序已签名:http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html

    【讨论】:

    • 我把图片和类保存在同一个目录下,例如: URL url = getDocumentBase(); ... 图片 img = getImage(url, "whatever.gif");我尝试从我的 HD 同一目录中的本地 html 文件运行它,不行。尝试用我的第二台计算机访问它,不行。
    猜你喜欢
    • 2021-06-30
    • 2011-09-24
    • 2014-07-12
    • 2013-12-30
    • 1970-01-01
    • 2014-10-08
    • 2023-04-07
    • 2016-03-24
    • 2010-10-14
    相关资源
    最近更新 更多