3

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

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 文件夹解决了该问题,而无需更改上述任何代码。

4

2 回答 2

1

如果发生这种情况:

policyURL.toString()

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

于 2012-09-18T13:37:13.213 回答
1

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

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

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

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

Eclipse 只执行类,这些类位于输出文件夹 ( bin) 中。

于 2012-09-18T13:31:03.803 回答