如何在JNLP执行期间检测功能是否可用?

时间:2020-03-05 18:44:48  来源:igfitidea点击:

我有一个应真正安装的应用程序,但是使用JNLP部署时可以正常工作。

但是,似乎某些Java函数(例如Runtime.exec)无法使用默认的安全选项运行。

因此,我想禁用依赖于此类功能的UI功能。

所以我的问题是,如何在运行时检测某些功能是否可用?

案例研究当然是" Runtime.exec"。

解决方案

回答

我们想向SecurityManager询问我们是否具有checkExec方法的执行权。

回答

我还发现将以下内容添加到JNLP文件中:

<security>
    <all-permissions/>
</security>

并对JAR文件进行签名后,该应用便可以使用Runtime.exec所需的所有权限运行。

回答

对于Runtime.exec的特定示例,在SecurityManager类checkExec(String cmd)上有一个方法,该方法将引发一个异常,可以捕获该异常以确定是否可以执行必要的命令。有关更多信息,请参见Runtime.exec和SecurityManager.checkExec的javadoc。

更一般的情况是需要创建一个Permission对象,该对象代表正在检查的任务,并运行SecurityManager的checkPermission方法。