2011-10-10 46 views
1

我创建了一个录制声音的小程序。当我尝试打开数据线时会引发异常。自签名录音机中的安全异常Applet

TargetDataLine.open()

java.security.AccessControlException:访问被拒绝(javax.sound.sampled.AudioPermission记录)

我的applet是自签名,所有其他jar文件是自签名。

以前我使用的是不同的线程来启动TargetDataLine并关闭该行。后缀而不是创建另一个线程,我切换到Executorservice。它适用于线程,但与ExecutorService一起抛出异常。

回答

2

由于执行程序服务在有来自javascript的调用时启动新线程,因此线程的安全级别设置为JavaScript线程的安全级别。

所以使用AccessControl.doPrivilaged有助于解决问题。 Explained here how to do it.