文档

Java™教程
隐藏目录
观察受限应用程序
教程:Java SE中的安全特性
课程:签名代码并授予权限
章节:代码接收者的步骤

观察受限应用程序

控制应用程序快速浏览课程的最后一部分展示了如何通过使用新的-Djava.security.manager命令行参数来调用解释器来在安全管理器下运行应用程序。但是,如果要调用的应用程序位于JAR文件中怎么办呢?

解释器选项之一是-cp(类路径)选项,它允许您指定应用程序类和资源的搜索路径。因此,要执行sCount.jar JAR文件中的Count应用程序,并将文件C:\TestData\data指定为其参数,可以在包含sCount.jar的目录中键入以下命令:

java -cp sCount.jar Count C:\TestData\data

要使用安全管理器执行应用程序,请添加-Djava.security.manager,如下所示:

java -Djava.security.manager -cp sCount.jar Count C:\TestData\data

重要提示:  运行此命令时,您的Java解释器将抛出以下异常:

Exception in thread "main" java.security.AccessControlException:
access denied (java.io.FilePermission C:\TestData\data read)
    at java.security.AccessControlContext.checkPermission(Compiled Code)
    at java.security.AccessController.checkPermission(Compiled Code)
    at java.lang.SecurityManager.checkPermission(Compiled Code)
    at java.lang.SecurityManager.checkRead(Compiled Code)
    at java.io.FileInputStream.<init>(Compiled Code)
    at Count.main(Compiled Code)

在此示例中,AccessControlException报告称count应用程序没有读取文件C:\TestData\data的权限。您的解释器引发此异常,因为除非应用程序具有明确的权限(通常在policy文件中的grant语句中指定),否则它不允许任何在安全管理器下运行的应用程序读取文件或访问其他资源。



上一页:代码接收者的步骤
下一页:将证书导入为受信任的证书