2011-04-30 36 views
0

我已經在訪問用戶文件目錄的html頁面中嵌入了一個applet。其簽署。當我在init函數中編寫代碼時,它運行得非常好,但是當我在代碼中寫入代碼並使用Javascript調用代碼時,它會向我發送安全異常。你有什麼想法我該如何解決這個問題?小程序安全

public class App extends javax.swing.JApplet { 

@Override 
public void init() { 


} 

public void callMethod(){ 
    File file = new File("D:/test.txt"); 
    if(!file.exists()){ 
     try { 
      file.createNewFile(); 
     } catch (IOException ex) { 
      Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
} 

} 


Javascript: 
    window.document.applets[0].callMethod(); 
+0

你能發表一些代碼嗎? – 2011-04-30 21:50:07

+0

我有問題的代碼。 – user704006 2011-04-30 21:59:28

+0

@Serhiy爲什麼不是...... – user704006 2011-04-30 22:00:06

回答

2

看看答案,這非常類似的問題可以幫助你:signed applet gives AccessControlException: access denied, when calling from javascript

+0

@ WhiteFand34問題與您提供的鏈接相同,但我無法理解解決方案。他正在onClick Event上重新加載applet,我不想這樣做,因爲它需要花費大量時間來加載所有需要的jar等。我試圖實現的是,在頁面加載時加載applet,並在需要時調用方法。如果我將重新加載所有的applet,那麼它會攔截瀏覽器。 – user704006 2011-04-30 22:13:24

2

被信任,在棧上的每一幀必須考慮。一旦JavaScript混合在一起,情況就不復存在了。

要解決該問題,請將受信任的代碼包裝在AccessController.doPrivileged()方法中。有關示例,請參閱JavaDocs。