我需要捕获一个网页屏幕,以便在客户端单击打印屏幕按钮时将其存储在客户机上。为此,我通过在我的jsp页面中嵌入一个带有签名(可信任的applet)的applet来实现这一点,我可以做到这一点。所以我正在尝试一个独立的java类的简单小程序。在成功之后,我可以在签署applet之后为jsp尝试它。 我试过是:java.security.AccessControlException当使用java.awt.Robot类在小程序中捕获屏幕时
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()
{
}
}
我得到这个:
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)
任何帮助,任何想法将appriciated。
*“我解决了这个问题”*不是。你只是将问题推迟到生产。在制作时,策略文件将不实用,并且应用程序。将需要数字签名(由您)和可信赖(由最终用户)以使用“机器人”。 – 2013-03-14 01:49:32
@安德鲁:我无法得到你?你能再给出一些解释,说明为什么它像“把问题推迟到生产”? 由于我在基于激光雷达技术的GIS扫描公司和java开发公司工作,我是一个人的军队(除了在线帮助,没有人会帮助我)。 – 2013-03-14 03:45:28
你不能指望最终用户去搞乱政策文件。这是不安全的,超出了他们的理解。因此,要获得在最终用户的计算机上工作的受信任的小程序,需要对其进行数字签名。既然它需要数字签名,那么你现在就可以工作。 Ant构建脚本可以对每个构建的类进行Jar和签名。 – 2013-03-14 03:48:05