如何摆脱这个 java.io.EOFException?

问题描述 投票:0回答:2

我想知道我的 java applet 中这段代码有什么问题:

for (int i = 0; i < 12; i++)
    {
        try {
            JOptionPane.showMessageDialog(null, "CodeBase: " + getCodeBase());
            JOptionPane.showMessageDialog(null, "Earl: " + new URL(getCodeBase(), "../animation/MonkeyAnimX" + String.valueOf(i) + ".jpeg"));
            preparedartwork[i] = getImage(new URL(getCodeBase(), "../animation/MonkeyAnimX" + String.valueOf(i) + ".jpeg"));
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }
    }

当抛出异常时,它说:

java.security.AccessControlException: access denied (java.io.FilePermission /var/www/animation/MonkeyAnimX0.jpeg read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:399)
at java.security.AccessController.checkPermission(AccessController.java:558)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at sun.awt.image.URLImageSource.<init>(URLImageSource.java:55)
at sun.applet.AppletImageRef.reconstitute(AppletImageRef.java:51)
at sun.misc.Ref.get(Ref.java:64)
at sun.applet.AppletViewer.getCachedImage(AppletViewer.java:395)
at sun.applet.AppletViewer.getImage(AppletViewer.java:390)
at java.applet.Applet.getImage(Applet.java:259)
at MonkeysTyping.init(MonkeysTyping.java:213)
at sun.applet.AppletPanel.run(AppletPanel.java:437)
at java.lang.Thread.run(Thread.java:679)

为了确保不会因为缺少权限而抛出此异常,我对其进行了更改,以便每个人和 -thing 都有权使用这些文件进行操作。 (-> cmod 777) 我从教程中得到了这段代码,这是怎么回事?

java image file exception applet
2个回答
2
投票

默认情况下,不允许小程序访问文件系统。这是一个主要的安全风险,因为您将文件系统暴露给外部网络。你可以阅读更多here.


0
投票

不是文件权限的问题,是小程序的安全限制问题。这是覆盖 SecurityManager 使用的默认安全策略文件所需的内容。

1)创建一个文本文件(例如applet.policy)

2) 授予小程序所有权限

 grant {
   permission java.security.AllPermission;
  };

3)用

运行小程序
-J-Djava.security.policy=applet.policy

在此处阅读有关小程序安全性的更多信息:小程序可以做什么和不能做什么

© www.soinside.com 2019 - 2024. All rights reserved.