2011-04-30 37 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。