使用这段代码尝试设置策略文件:
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文件夹解决了问题,而没有更改上面的任何代码。
答案 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对象。