2012-06-11 56 views
4

我試圖讀取從applet的一個環境不受varaible一個小程序的時候,這裏是我的代碼java.lang.RuntimePermission運行從Web應用程序

String env = System.getenv("TWS"); 
    System.out.println(env); 
    Runtime rt = Runtime.getRuntime(); 
    String s = env + "\\WebStart.bat " ; 
    System.out.println(s); 
    try { 
     Process p = rt.exec(s); 
    } catch (Exception e) { 
    } 

當我從右鍵NetBeans的運行代碼並運行,它運行沒有問題。

但是當我把它放到一個jar文件,將其添加到我的web應用程序,並嘗試使用下面的代碼

<applet code="draw.class" archive='AppletTest.jar'> 
    <param name="shape" value="triangle"/> 
</applet> 

我得到一個錯誤說拒絕訪問從一個HTML頁面運行,java.lang.RuntimePermission

我使用的Tomcat 6

我看過一些指南和運行這個Web應用程序添加以下條目的catalina.policy在Tomcat中6文件並重新啓動Tomcat的

permission java.lang.RuntimePermission "accessDeclaredMembers"; 

但仍然是相同的警告。有人可以爲此提出解決方案嗎?

--rangana

回答

3

當您從NetBeans的小程序,Java虛擬機運行時,它在不同的安全機制下,當你通過瀏覽器來運行它比。

通過瀏覽器下載的未使用安全證書籤名的小應用程序被認爲是不可信的並且被稱爲未簽名的小應用程序。在客戶端上運行時,未簽名的applet在安全沙箱內運行,只允許一組安全操作。您可以通過使用SecurityManager來檢查是否授予您applet的特權。例如,在你的情況:

System.getSecurityManager().checkPermission(new RuntimePermission("accessDeclaredMembers")); 

您可以瞭解更多關於小程序的安全herehere。有關製作簽名小程序的非常好的教程可以參見here

+0

+1順便說一句。您是否在同一個ID下發布了usenet(comp.lang.java)? –

+0

@AndrewThompson:不會。 –

+0

使用簽名的applet我能夠完成這個任務,謝謝你的幫助:) –