即使我在java.security中指定了policy.url,访问也被拒绝

时间:2010-09-10 03:43:34

标签: java security exception

我正在阅读oracle的java安全教程。 (http://download.oracle.com/javase/tutorial/security/toolsign/rstep4.html

我基本上复制了教程中的所有文件和所有内容。

我能够使用安全管理器在unix中使用以下方法运行该文件:

java -Djava.security.manager -Djava.security.policy=recvPolicy -cp sCount.jar Count ../../test

但是当我尝试在java.security文件中指定一个新的policy.url时,如下所示:

policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
policy.url.3=file:/home/myhome/SigningTest/recvPolicy

当我跑步时,它给了我一个例外:

java -Djava.security.manager -cp sCount.jar Count ../../test

例外是:

Exception in thread "main" java.security.AccessControlException: access denied (java.io.FilePermission ../../test read)
 at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
 at java.security.AccessController.checkPermission(AccessController.java:546)
 at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
 at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
 at java.io.FileInputStream.<init>(FileInputStream.java:100)
 at java.io.FileInputStream.<init>(FileInputStream.java:66)
 at Count.main(Count.java:17)

感谢您的反馈

1 个答案:

答案 0 :(得分:2)

好的,我对此进行了快速测试,它对我有用。所以唯一可能导致这个问题的问题(我猜)是你的unix盒子上安装了两个jdks。因此,请确保您用于命令行执行的“java”与您已修改其java.security的版本相同。

默认的sun java 6安全文件(如果您使用的是ubuntu)位于:

/etc/java-6-sun/security/java.security

因此,请确保您正在编辑正确版本的java.security