Java小程序无法访问文件
Java Applet Can't Access Files
我正在尝试使用 HTML 文件从已签名的 jar 启动 Java Applet。当我从 Netbeans 运行 小程序工作正常时,但我知道这是因为小程序的安全限制。我收到的错误消息与程序需要对特定文件的读取权限有关。
经过一些在线搜索后,我发现 doPrivileged() 应该用于此行为,所以我在我的代码中添加了它,但我仍然收到错误消息。
HTML -
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Launch Applet</title>
<body>
<tr>
<td><center>
<applet
archive=widget.jar
code=widget.class
width=1100
height=1100>
</applet>
</center></td>
</body>
函数在Java-
class OpenThread implements Runnable{
public void run(){
try {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
public Object run() {
if(new File(path+"\loadFile.txt").exists()){
System.out.println("true");
}
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
出于调试目的,我削减了线程,最终代码中将再次使用 txt 文件。我不确定我的 JAR 文件是否签名不正确,jar 中的 MANIFEST 文件是否应包含文件权限,或者我是否必须编辑我的 java.policy 文件。有什么想法吗?
您有两个基本选择。您可以创建一个策略文件,使小程序能够访问本地文件系统。这里有详细教程:
http://docs.oracle.com/javase/tutorial/security/tour1/index.html
您的另一个选择是使用 JNLP 启动小程序。这将使您能够访问本地计算机上的各种资源。这是最短路径。
我正在尝试使用 HTML 文件从已签名的 jar 启动 Java Applet。当我从 Netbeans 运行 小程序工作正常时,但我知道这是因为小程序的安全限制。我收到的错误消息与程序需要对特定文件的读取权限有关。
经过一些在线搜索后,我发现 doPrivileged() 应该用于此行为,所以我在我的代码中添加了它,但我仍然收到错误消息。
HTML -
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Launch Applet</title>
<body>
<tr>
<td><center>
<applet
archive=widget.jar
code=widget.class
width=1100
height=1100>
</applet>
</center></td>
</body>
函数在Java-
class OpenThread implements Runnable{
public void run(){
try {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
public Object run() {
if(new File(path+"\loadFile.txt").exists()){
System.out.println("true");
}
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
出于调试目的,我削减了线程,最终代码中将再次使用 txt 文件。我不确定我的 JAR 文件是否签名不正确,jar 中的 MANIFEST 文件是否应包含文件权限,或者我是否必须编辑我的 java.policy 文件。有什么想法吗?
您有两个基本选择。您可以创建一个策略文件,使小程序能够访问本地文件系统。这里有详细教程:
http://docs.oracle.com/javase/tutorial/security/tour1/index.html
您的另一个选择是使用 JNLP 启动小程序。这将使您能够访问本地计算机上的各种资源。这是最短路径。