你可以签署一个Java applet但是把它保存在沙箱中(不能让它完全访问用户的计算机)?

由于Oracle的最新更改,我似乎必须签署一个applet,即使我不需要或希望它可以无限制地访问用户的计算机(这就是它当前未签名的原因)。 特别是,我不希望他们为已签名的applet显示警告:

此应用程序将以不受限制的访问方式运行,这可能会使您的计算机和个人信息面临风险。

……这将吓唬使用它的人。

是否有可能签署一个小程序,但以某种方式标记它说“但继续使用沙箱”?

我签署它的唯一原因是从版本7更新40开始,Oracle进一步增加了用户在运行未签名的applet时必须处理的唠叨。 过去,您可以选中一个表示您信任applet一次的框,这将被记住。 从Update 40开始,它只记得该浏览器会话; 如果您关闭浏览器并稍后返回,则会再次出现警告。 他们还说他们将完全在Java插件的“未来版本”中禁用未签名的applet。

是的你可以。 此页面显示了如何操作(嗯,大部分内容;您还需要此页面 )。 主要有两个步骤:

  1. PermissionsCodebase属性放在清单文件中:

     权限:沙箱
    代码库:* .myserver.com 

    这些新属性在Java 7 Update 25中引入,并在此处讨论 。 上面链接的第一页只显示了Codebase: myserver.com ,但大多数网站都需要上面的通配符。 (我不知道沙盒化applet是否需要Codebase属性,但对于大多数已签名的applet来说似乎都是个好主意。)

    然后在构建jar时使用该清单文件,例如:

      jar cvfm YourJarFile.jar your_manifest_file.txt classes_and_such 

    这些属性将在jar中的MANIFEST.MF文件中结束,该文件告诉Java运行时将applet保持为沙盒。

  2. 标记中,您必须指定permissions参数, 如下所述 :

      
         
      

    如果没有第二步,则会阻止使用标题为“应用程序无法运行”的对话框运行请求jar中的沙箱权限而不是标记的签名小程序,并显示“原因:请求仅在沙箱中运行JAR清单”。

如果您执行上述两个步骤,则用户会收到更令人放心的消息(并且可能是applet保持沙箱):

此应用程序将以有限的访问权限运行,旨在保护您的计算机和个人信息。

…如果他们检查信任发布者和位置的相关复选框,他们在下次打开浏览器并运行您的小程序时就不会再看到它。


(在提出这个问题的过程中,我找到了答案,但由于答案不在Stack Overflow上,我以为我会继续发布问题和答案 。)