如何在安全管理器策略文件中为可变父目录授予文件读/写权限

时间:2014-02-06 20:31:38

标签: java junit securitymanager

我正在学习使用安全管理器,我在运行单元测试时收到此错误:

Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Users\[username]\AppData\Local\NetBeans\Cache\7.4\executor-snippets\junitvmwatcher1469887727677239882.properties" "write")

对该目录授予权限很简单。问题是我在不同的计算机上运行此代码。理想情况下,我想做这样的事情:

permission java.io.FilePermission "*/NetBeans/Cache/7.4/-", "write";

但显然SecurityManager无法识别路径开头的通配符。我尝试过使用星号和破折号。两者都不起作用。

基本上,我想让我的测试运行而不需要硬编码绝对路径。还有另一种方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:1)

您可以使用property expansion in policy files

  

例如,权限java.io.FilePermission“$ {user.home}”,“read”;   将展开“$ {user.home}”以使用“user.home”系统属性的值。

你可以设置:

permission java.io.FilePermission "${user.home}/AppData/Local/NetBeans/-", "write";

得到你想要的东西?