查看策略文件效果

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

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

Approach 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之前有一个空格。

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

如果仍然报告错误,则说明策略文件中有问题。使用策略工具来检查您刚刚在previous step中创建的权限,并更改任何错字或其他错误。

Approach 2

您可以在安全属性文件的policy.url.n属性中指定许多 URL(包括形式为“ http://”的 URL),然后将加载所有指定的策略文件。

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

Important:

如果您正在运行自己的 JDK 副本,则可以轻松地编辑安全属性文件。如果您正在运行与他人共享的版本,则只有在您拥有对该文件的写权限或要求系统 管理 员在适当的时候修改该文件的情况下,您才能够修改该系统范围的安全属性文件。但是,对于本教程测试,您可能不适合对系统范围的策略文件进行修改。我们建议您仅阅读以下内容以了解其完成方式,或者安装自己的专用 JDK 版本以用于本教程。

安全属性文件位于

  • Windowsjava.home\lib\security\java.security

  • UNIXjava.home/lib/security/java.security

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

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

  • Windowspolicy.url.3=file:/C:/Test/exampleraypolicy

  • UNIXpolicy.url.3=file:${user.home}/test/exampleraypolicy

在 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

与方法 1 相同,如果程序仍然报告错误,则策略文件有问题。使用策略工具来检查您刚刚在previous step中创建的权限,并更改任何错字或其他错误。

Important:

在 continue 之前,您可能希望删除刚添加到安全属性文件中的行(或将其 注解 掉),因为在不运行教程时,您可能不希望包含exampleraypolicy文件。