我正在阅读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)
感谢您的反馈
答案 0 :(得分:2)
好的,我对此进行了快速测试,它对我有用。所以唯一可能导致这个问题的问题(我猜)是你的unix盒子上安装了两个jdks。因此,请确保您用于命令行执行的“java”与您已修改其java.security的版本相同。
默认的sun java 6安全文件(如果您使用的是ubuntu)位于:
/etc/java-6-sun/security/java.security
因此,请确保您正在编辑正确版本的java.security