Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java小程序:如何摆脱这个Java.io.EOFException?_Java_Image_File_Exception_Applet - Fatal编程技术网

Java小程序:如何摆脱这个Java.io.EOFException?

Java小程序:如何摆脱这个Java.io.EOFException?,java,image,file,exception,applet,Java,Image,File,Exception,Applet,stackoverflow用户你好! 我想从我的java小程序中了解这段代码的错误: for (int i = 0; i < 12; i++) { try { JOptionPane.showMessageDialog(null, "CodeBase: " + getCodeBase()); JOptionPane.showMessageDialog(null, "Earl: " + new URL(getCodeBa

stackoverflow用户你好! 我想从我的java小程序中了解这段代码的错误:

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();
        }
    }
for(int i=0;i<12;i++)
{
试一试{
showMessageDialog(null,“CodeBase:+getCodeBase());
showMessageDialog(null,“Earl:+新URL(getCodeBase(),”./animation/MonkeyAnimX“+String.valueOf(i)+.jpeg”);
preparedartwork[i]=getImage(新的URL(getCodeBase(),“./animation/MonkeyAnimX”+String.valueOf(i)+.jpeg”);
}捕获(格式错误){
例如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)
java.security.AccessControlException:拒绝访问(java.io.FilePermission/var/www/animation/MonkeyAnimX0.jpeg-read)
位于java.security.AccessControlContext.checkPermission(AccessControlContext.java:399)
在java.security.AccessController.checkPermission(AccessController.java:558)
位于java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
位于java.lang.SecurityManager.checkRead(SecurityManager.java:888)
位于sun.awt.image.urlmagesource.(urlmagesource.java:55)
在sun.applet.AppletImageRef.recombuite(AppletImageRef.java:51)
在sun.misc.Ref.get(Ref.java:64)
位于sun.applet.AppletViewer.getCachedImage(AppletViewer.java:395)
位于sun.applet.AppletViewer.getImage(AppletViewer.java:390)
位于java.applet.applet.getImage(applet.java:259)
位于MonkeysTyping.init(MonkeysTyping.java:213)
运行(AppletPanel.java:437)
运行(Thread.java:679)

为了确保由于缺少权限而无法抛出此异常,我对其进行了更改,以便每个人和-thing都有权操作这些文件。(->cmod 777)我从一个教程中获得了这段代码,所以有什么问题吗?

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

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

2) 向小程序授予所有权限

 grant {
   permission java.security.AllPermission;
  };
3) 使用以下命令运行小程序:

-J-Djava.security.policy=applet.policy

在此处阅读有关小程序安全性的更多信息:

默认情况下,不允许小程序访问文件系统。这是一个主要的安全风险,因为您将文件系统暴露于外部web环境。您可以阅读更多内容。

小方注:构建字符串时不需要String.valueOf。这将编译无误:
”。/animation/MonkeyAnimX“+i+”.jpeg“
这是一种java安全功能,小程序无法访问硬盘上的文件。如果您通过本地主机或离线打开页面,并且相关路径正确,则应该可以正常工作。关于从本地磁盘启动的小程序的Java安全性变得如此严格,以至于它无法代表沙盒小程序在网络或本地服务器上可以做什么。顺便说一句-为什么要编写小程序?如果是由于老师的特殊要求,请参考。