从代码设置Java安全策略

时间:2012-09-18 13:28:40

标签: java security-policy

使用这段代码尝试设置策略文件:

ClassLoader cl= getClass().getClassLoader();
URL policyURL =cl.getResource("res/policy/new_policy.policy");
System.setProperty("java.security.policy", policyURL.toString());

我在最后一行得到java.lang.NullPointerException。 该文件位于我的项目目录中的正确路径中。

问题:什么可能导致此异常?

答案:从eclipse运行,路径是相对于主项目文件夹构建的,而不是项目的bin文件夹。考虑到这一点,移动bin文件夹中的res文件夹解决了问题,而没有更改上面的任何代码。

2 个答案:

答案 0 :(得分:1)

如果路径在您的项目中,请添加/

cl.getResource("/res/policy/new_policy.policy")

但我建议您打印policyURL的值以检查您是否检索到该文件。

如果您在Eclipse中执行,请记住资源必须位于资源文件夹中,以便在构建时转到classes文件夹。

Eclipse只执行类,类存在于输出文件夹(bin)。

答案 1 :(得分:1)

如果出现这种情况:

policyURL.toString()

为null,因为属性值存储在Hashtable中,而Hashtable类在其put方法中检查值是否为null,如果是,则抛出NullPointerException。我会确保正确构造您的policyUrl对象。