我想将单个安全策略文件发送给我们的客户 - 适用于Linux和Windows。在java.security文件中,我添加一行指向我们的文件,但由于路径差异,我必须为Windows和Linux指定不同的
policy.url.3=file:/${our.home}/lib/OurSecurity.policy # Windows
policy.url.3=file:${our.home}/lib/OurSecurity.policy # Linux
第一个" /"在"文件之后:"因为变量our.home被定义为" C:\ foo"所以在Windows上需要。我在策略文件中遇到了同样的问题:
grant codeBase "file:/${our.home}/-" // Windows
grant codeBase "file:${our.home}/-" // Linux
我特别希望找到一种以独立于平台的方式指定codeBase的聪明方法。顺便说一句,重新定义our.home并不是一个选项,因为它在FilePermission子句中是必需的。
答案 0 :(得分:1)
如果是我,我会接受这样的事实:我需要不同的文件,并通过脚本删除“/".
从Windows版本生成Linux版本但是,如果你真的需要使用同一个文件,你可以通过定义另一个环境变量来代表Windows上的“/”并在linux上将它显示为空白,从而将一种痛苦换成另一种。
# our.hack = "/" on windows
# our.hack = "" on linux
policy.url.3=file:${our.hack}${our.home}/lib/OurSecurity.policy
也许my.hack不是生产环境中最好的名字,但你明白了。该变量不用于任何其他内容,因此不应干扰应用程序的其余部分。
答案 1 :(得分:0)
为什么要使用相同的策略文件?
对于Linux和Windows,JRE是不同的,因此您应该遵循这一点并为每个安装保留不同的版本
IMO在这个案例中没有维护2个文件的问题
另外我建议你应该关注java更新可以删除你的策略文件这一事实。