java.security.AccessControlException podczas używania klasy java.awt.Robot do przechwytywania ekranu w aplecie
Potrzebuję przechwycić ekran strony internetowej, aby zapisać go na komputerze klienta, gdy klient kliknie przycisk ekranu drukowania. W tym celu wyszedłem na Google i założyłem, że osadzając aplet z podpisem (zaufany aplet) na mojej stronie jsp, mogę to zrobić. Próbuję więc za pomocą prostego apletu samodzielnej klasy java. Na sukces mogę wypróbować jsp po podpisaniu apletu. Próbowałem:
import java.applet.Applet;
import java.awt.Graphics;
import java.util.Date;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
/* <applet code = MyApplet.class width="500" height="500">Java Applet for screen capture</applet> */
public class MyApplet extends Applet {
/* Applet Life cycle Methods */
public void start()
{
try{
// capture the whole screen
BufferedImage screencapture = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );
// Save as JPEG
File file = new File("D:/screencapture.jpg");
ImageIO.write(screencapture, "jpg", file);
System.out.println("screen capture finished : ");
}//try closing...
catch(Exception e)
{
System.out.println("screen capture error : ");
e.printStackTrace();
}//catch closing...
}//start closing...
public void stop()
{
}
}
Dostaję to:
java.security.AccessControlException: access denied ("java.awt.AWTPermission" "createRobot")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
at java.security.AccessController.checkPermission(AccessController.java:560)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.awt.Robot.checkRobotAllowed(Robot.java:170)
at java.awt.Robot.init(Robot.java:134)
at java.awt.Robot.<init>(Robot.java:96)
at MyApplet.start(MyApplet.java:23)
at sun.applet.AppletPanel.run(AppletPanel.java:474)
at java.lang.Thread.run(Thread.java:722)
Każda pomoc, każdy pomysł zostanie zatwierdzony.