2012-09-18 74 views
3

设置使用这段代码,试图建立一个政策文件:Java安全策略从代码

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

回答

1

如果路径是在你的项目中,添加一个/

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

但我建议你打印的policyURL值,以检查您检索到的文件就OK了。

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

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

+0

试过这样,结果一样。在打印URL时,它是空的。那为什么它不加载资源? – CosminO

+1

你正在执行一个jar吗?从哪个文件夹?你在扩大罐子吗?你是否从eclipse执行它? – ssedano

+0

它从eclipse – CosminO

1

这会发生,如果:

policyURL.toString() 

为空,因为属性值存储在一个Hashtable和Hashtable类检查是否在它的投入方法,并抛出一个NullPointerException如果值为null 。我会确保您的policyUrl对象正在正确构建。