我需要捕獲一個網頁屏幕,以便在客戶端單擊打印屏幕按鈕時將其存儲在客戶機上。爲此,我通過在我的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