2010-11-17 79 views
1

我正在爲測試服務器設置一個Web界面。一些測試涉及打開特定文件,捕獲屏幕,然後保存生成的圖像。我爲此使用Runtime.getRuntime().exec()和Robot。Tomcat/JSP:在服務器上打開一個文件並截圖

如果我通過遠程桌面訪問服務器並運行測試,一切正常;該文件被打開並且屏幕截圖被保存。如果我嘗試使用Tomcat通過JSP文件運行相同的測試,則不會打開任何文件(但可以在任務管理器中找到該過程),並且圖像完全是黑色的。

下面是一個簡單的例子,將導致黑/空白圖像(從JSP文件):

/* initializing stuff goes here */ 
Runtime.getRuntime().exec("C:\\Windows\\System32\\notepad.exe"); 
BufferedImage screenCap = robot.createScreenCapture(rect); 
File savedImage = new File("C:\\test.png"); 
ImageIO.write(screenCap, "png", savedImage); 

正是我試圖做可能嗎?

回答

0

在MS Windows上:如果tomcat作爲服務運行,它可能會錯過與桌面交互的權限,因此可能無法啓動打開窗口的程序。

服務屬性對話框中有勾號。

+0

這最終成爲最簡單的方法。謝謝。 – CEB 2010-11-19 20:44:45

0

JSP必須由網絡服務器提供並由網頁瀏覽器瀏覽。在http://localhost上使用Desktop#browse()來瀏覽它,並且僅在一段時間(5秒?)後才截圖,瀏覽器當然需要一定的時間才能啓動並完全加載頁面。

開球例如:

Desktop.getDesktop().browse(new URI("http://localhost:8080/page.jsp")); 
Thread.sleep(5000); 
BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); 
ImageIO.write(image, "png", new File("/screen.png")); 

但是,您有這個工作需要進行排隊,以避免不同的屏幕捕獲請求干擾對方考慮。另請注意,這在無頭服務器(沒有監視器的服務器機器)中不起作用。

相關問題