我正在使用Javascript与Java applet交互的HTML页面。 applet的HTML页面,javascript文件和.jar文件将本地部署到用户文件系统上的文件夹中。
(将此作为一个独立的Java应用程序,这里不是一个选项;由于各种原因,我不会在这里解释。)
applet需要执行本地文件i / o。因此,我试图调整用户的.java.policy文件中的设置以允许此操作。
我发现以下设置是唯一有效的设置:
grant
{
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.io.FilePermission "<<ALL FILES>>", "write";
};
这并不理想,因为它授予所有applet读取写入所有文件的权限。当然,我更愿意隔离到特定的代码库。但是我找不到有效的“grant codeBase”语法。
我试过了:
grant codeBase "file:/C:/Files/FileIOApplet/-" {
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.io.FilePermission "<<ALL FILES>>", "write";
};
grant codeBase "file:///-" {
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.io.FilePermission "<<ALL FILES>>", "write";
};
grant codeBase "file:${user.home}/-"
{
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.io.FilePermission "<<ALL FILES>>", "write";
};
这是使用此配置运行的:
我在设置这个.java.policy文件时出错?
我对Java世界非常生疏,尤其是使用applet - 所以我们非常感谢您的专业知识!
答案 0 :(得分:4)
要在此处连接具有访问权限的Applet,请使用策略工具设置:
转到policyTool,您将在以下路径中找到它:
java->jdk1.3->bin->policyTool Application
出现Policy Tool窗口 在Policy Tool窗口中,选择“Add Policy Entry”按钮。 这将带您进入Policy Entry窗口
将CodeBase输入为“file:/ java bin的路径”。例如
CodeBase file:/c:/java/jdk1.3/bin/
现在按下Policy Entry窗口中的“Add Permission”按钮 这将带您进入“权限”窗口
从权限下拉列表框中选择“所有权限” 然后点击“确定”。
现在再次按下Policy Entry窗口中的“Add Permission”按钮。
现在从权限下拉列表框中选择“选择”RunTimepermission。
现在在Target Name下拉列表框中选择“accessClassInpackage”,在文本框中输入accessClassInpackage.sun.jdbc.odbc
现在点击“确定”。
现在点击“政策输入”窗口中的“完成”。
现在在Policy Entry窗口文件中 - &gt;保存 将其保存在Java安装的“bin”中。 记住名字...... 比如说.. appletpermission '保存'
现在您已创建了一个用于访问的策略文件
现在在命令提示符下编译你的java文件
javac programname.java
要运行程序,请在cmd提示符下键入以下内容:
appletviewer -J-Djava.security.policy=appletpermission programname.java
现在一切都已完成。
答案 1 :(得分:0)
不要浪费你的语法时间,而是使用政策工具: