java - 在我的 GWT 应用程序运行时 (java.io.FilePermission) 上没有对文件的读/写访问权限

标签 java google-app-engine

我在尝试运行我的 GWT 应用程序时遇到此运行时错误:

­java.security.AccessControlException: access denied (java.io.FilePermission C:\Users\Admin\AppData\Local\Temp\tmp-andami read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)

(堆栈跟踪较长,但我想这足以聚焦问题源)

我在 Google 中搜索过这个问题,一般来说,我发现更改 java.policy 文件(位于 C:\Program Files\Java\jre6\lib\security),所以我做了类似的事情:

permission java.io.FilePermission "<<ALL FILES>>" , "read";
permission java.io.FilePermission "C:\Users\Admin\AppData\Local\Temp\tmp-andami" , "read";
permission java.security.AllPermission;

问题是在那个 PATH 文件或文件夹中“tmp-andami”不存在(也许它是隐藏的),所以我不知道是权限问题还是这个文件不存在的问题,因此无法读取。

所有这些都来 self 代码中写的一行:

private static final String tempDirectoryPath = 
System.getProperty("java.io.tmpdir")+"/tmp-andami";

但是我需要在此处或在另一个 PATH 中编写此文件,我不在乎。我试着把文件写在“C:/”下,但我得到了同样的结果。

关于这个问题有什么想法吗?我做错了什么吗?

非常感谢!


但我使用的是从“服务器”包端访问我的文件系统,而不是包含可翻译代码的“客户端”。

我认为这样做是可能的。

那么,我能做什么呢?它应该存在一种访问本地文件系统的方法,不是吗?或者至少是一种替代方法。

然后,将此文件放在本地部署的应用程序文件系统下怎么样?我的意思是,在“ war ”目录或类似的目录下。如果浏览器可以访问这个文件夹来读取 .jars 等等,是否可以做同样的事情但有另一个目的?

感谢您的帮助!

最佳答案

GWT 将您的代码编译成在浏览器中运行的 JavaScript。 JavaScript 无法访问您的文件系统(有充分的理由)。

java.io.FilePermission 未在 JRE Emulation Reference 中列出所以你不能在你的客户端代码中使用它,所以它甚至不能用 GWT 编译。

关于java - 在我的 GWT 应用程序运行时 (java.io.FilePermission) 上没有对文件的读/写访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340570/

相关文章:

java - 无法通过通用选项解析器设置mapreduce.job.reduces

java - 为什么我不能替换 ":)"

java - 在准备好的语句中输入一组数字

java - 如何从后端运行 Google 应用引擎端点方法

java - ganymed SSH2 java

java - spring-boot中如何使用环境变量

node.js - Google App Engine Nodejs 错误 409

python - 将 Blobstore 移动到 GCS : Google App Engine Python

python - 当我使用 App Engine SDK 在本地主机中部署我的谷歌云端点 python 应用程序时出错

google-app-engine - App Engine 作为 OAuth2 提供者