您好我有一个小程序,可以根据CSV文件中的某些调查数据创建图表。我希望Applet也生成图形的png文件。这在我的计算机上进行测试时有效但在线托管时出现以下安全错误
java.security.AccessControlException: access denied
("java.io.FilePermission" "detail.png" "delete")
with detail.png是我正在尝试创建的png文件的名称。
这是在我的applet中创建文件的代码。
public void imgPaint(){
done=1;
setSize(800,500);
BufferedImage bi = new BufferedImage(this.getSize().width, this.getSize().height, BufferedImage.TYPE_INT_ARGB);
g2 = bi.createGraphics();
paint(g2);
try{ImageIO.write(bi,"png",new File("detail.png"));}catch (Exception e) {e.printStackTrace();}
}
因此,当applet调用JPanel时,它会转到paint方法,绘制到屏幕上,然后调用此方法再次绘制到png文件。无论如何,问题似乎不是代码,而是Java不允许我创建一个png文件。它应该转到托管程序的服务器上的文件。
我对Java安全性一无所知,所以你们给予的任何帮助都会很棒。
答案 0 :(得分:0)
它应该转到托管程序的服务器上的文件。
为了服务器的安全性,客户端(applet或其他)无法在服务器上创建File
。您可以提供applet随后可以使用的特定上载工具(例如基于FTP)。
该代码实际上是在尝试在用户的本地文件系统上创建File
。