0

我正在运行一个java应用程序,我的策略文件在同一个文件夹中,它给出了以下错误。如果我在没有指定策略相关参数的情况下运行它,它运行良好。知道我在这里做错了什么以及如何解决吗?谢谢。

错误:无法找到或加载主类 –Djava.security.policy==quantanywhere.policy

java -Djava.security.manager –Djava.security.policy==my.policy -jar myapp.jar

my.policy 文件内容:

grant {
    permission java.security.AllPermission;
};
4

1 回答 1

0

我知道了..

#1 创建策略文件并赋予所有权限

grant {
    permission java.security.AllPermission "", "";
};

#2 在命令行中指定该策略文件

-Djava.security.manager -Djava.security.policy==/path/my.policy

#3 创建自定义安全管理器类

public class MySecurityManager extends SecurityManager
{
    @Override
    public void checkExec(String cmd) 
    {
        throw new RuntimeException( "Cannot execute shell script" );
    }
}

#4 激活您的自定义安全管理器

    SecurityManager securityManager = new MySecurityManager();
    
    System.setSecurityManager( securityManager );

#5 就是这样。您的应用程序无法再执行 shell 命令/脚本

于 2021-11-11T23:53:30.187 回答