4

我有 RMI 应用程序,所以我需要使用策略文件。

我的策略文件很简单(conf.txt):

grant {
    permission java.security.AllPermission;
};

我从 Eclipse 运行我的应用程序没有问题。我在 VM 参数中添加了:-Djava.security.policy=conf.txt。

我想做的是构建一个jar文件。我从 Eclipse 将它作为 Runnable JAR 文件制作,但运行它时遇到了一些问题。我尝试像这样运行它:

java -Djava.security.policy=C:\Users\myuser\proj\conf.txt -jar C:\Users\myuser\proj\proj.jar

我得到与没有 -Djava.security.policy 选项相同的结果。

我的代码:

System.setProperty("java.security.policy", "./conf.txt");
...
if (System.getSecurityManager() == null) {
            System.setSecurityManager(new SecurityManager());
        }

我怎样才能使它工作?如果我不必通过 -Djava.security.policy 就更好了:

java -jar myprog.jar
4

1 回答 1

3

对于初学者,System.setProperty("java.security.policy", "./conf.txt");请从您的代码中删除。它覆盖了您在命令行中设置的值,并且其中包含完整路径并且可以工作。System.setProperty在任何情况下,如果您在代码中,您都不会测试该命令行的效果。

于 2012-04-16T07:10:50.970 回答