文档

Java™教程
隐藏目录
查看策略文件效果
路径: Java SE 中的安全特性
教程: 签署代码并授予其权限
章节: 代码接收者的步骤

查看策略文件的效果

在之前的步骤中,您在exampleraypolicy策略文件中创建了一个条目,授予由susan签名的代码权限从C:\TestData\目录(或您的主目录中的testdata目录,如果您在UNIX上工作)中读取文件。现在,即使在使用安全管理器运行应用程序时,您应该能够成功执行Count程序以读取并计算指定目录中文件中的字符数。

如在创建策略文件课程的最后所述,有两种可能的方法可以将exampleraypolicy文件视为整体策略的一部分,除了在安全属性文件中指定的策略文件之外。第一种方法是在传递给运行时系统的属性中指定额外的策略文件。第二种方法是在安全属性文件中添加一行指定额外的策略文件。

方法1

您可以使用-Djava.security.policy命令行参数来指定应使用的策略文件,除了或替代安全属性文件中指定的策略文件。

要运行Count应用程序并包含exampleraypolicy策略文件,请在包含sCount.jarexampleraypolicy文件的目录中键入以下命令:

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

注意:在-D-cp之前有一个空格,将命令键入单行。

程序应报告指定文件中的字符数。

如果仍然报告错误,则策略文件中有问题。使用策略工具检查您在上一步中刚创建的权限,并更正任何拼写错误或其他错误。

方法2

您可以在安全属性文件中的policy.url.n属性中指定一些URL(包括形如"http://"的URL),并且所有指定的策略文件都将被加载。

因此,让解释器考虑您的exampleraypolicy文件的策略条目的一种方法是在安全属性文件中添加指示该文件的条目。


重要:如果您正在运行自己的JDK副本,可以轻松编辑安全属性文件。如果您正在与其他人共享的版本上运行,则只有在拥有写权限或在适当时请您的系统管理员修改文件时,才能修改系统范围的安全属性文件。然而,对于本教程测试来说,可能不适合您对系统范围的策略文件进行修改;我们建议您只是阅读以下内容以了解如何操作,或者您可以安装自己的私有JDK版本来用于教程课程。

安全属性文件位于

java.home 部分指示了JRE安装的目录。

要修改安全属性文件,在适合编辑ASCII文本文件的编辑器中打开它。然后在以 policy.url.2 开头的行后面添加以下行:

在UNIX系统中,你也可以明确指定你的主目录,比如:

policy.url.3=file:/home/susanj/test/exampleraypolicy

接下来,在命令窗口中,进入包含 sCount.jar 文件的目录,也就是 C:\Test~/test 目录。在一行中输入以下命令:

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

与第一种方法一样,如果程序仍然报错,说明策略文件有问题。使用策略工具检查你在 上一步 中创建的权限,并更正任何拼写错误或其他错误。


重要: 在继续之前,你可能想要删除刚刚在安全属性文件中添加的行(或将其注释掉),因为在你不运行教程课程时,可能不希望包含 exampleraypolicy 文件。

上一页:保存策略文件
下一页:文件交换