在我的GWT应用程序运行时(java.io.FilePermission)上没有对文件的读/写访问权限
尝试运行GWT应用程序时,我在运行时遇到此错误:在我的GWT应用程序运行时(java.io.FilePermission)上没有对文件的读/写访问权限,java,google-app-engine,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.AccessCont
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)
(堆栈跟踪较长,但我想这足以解决问题源)
我在谷歌上搜索过这个问题,我发现,一般来说,我可以更改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;
但我需要写这个文件,在这里或在另一个路径,我不在乎。我曾尝试在“C:/”下编写该文件,但得到了相同的结果
你知道这个问题吗?我做错什么了吗
多谢各位
但我使用的是从“服务器”包端访问文件系统,而不是包含可翻译代码的“客户端” 我认为这样做是可能的 那么,我能做什么?它应该存在一种访问本地文件系统的方法,不是吗?或者至少是做同样事情的另一种方式 那么,将此文件放在本地部署的应用程序文件系统下如何?我是说,在“战争”目录下或者类似的目录下。如果浏览器可以访问此文件夹以读取.jars等,是否可以执行相同的操作,但有其他用途
谢谢你的帮助 GWT将您的代码编译成在浏览器中运行的JavaScript。JavaScript无法访问您的文件系统(有充分的理由)
java.io.FilePermission
未在中列出,因此您不能在客户端代码中使用它,因此它甚至不能使用GWT进行编译。GWT将您的代码编译为在浏览器中运行的JavaScript。JavaScript无法访问您的文件系统(有充分的理由)
java.io.FilePermission
未在中列出,因此您不能在客户端代码中使用它,因此它甚至不能使用GWT进行编译。您无法读取或写入App Engine上的临时文件。您可以读取应用程序上载的文件,但不能写入新文件或访问应用程序外部的任何文件。您不能读取或写入应用程序引擎上的临时文件。您可以读取应用程序上载的文件,但不能写入新文件或访问应用程序外部的任何文件。但我不是从客户端代码调用java.io.FilePermission。在我的应用程序中,我将两个源链接到我的项目,其中一个称为“LibRemoteServices”,其中有一个“Utilities.java”文件将在最后调用该类。但是客户端代码和链接的源代码都在不同的包和文件夹中。顺便说一句,我得到一个错误,上面说:“Google App Engine的java运行时环境不支持java.io.FileOutput(也是java.rmi.NoSuchObjectException)”。我从应用程序引擎验证中排除了“Utilities.java”,但在运行时仍然会遇到相同的错误。那么,我该怎么办?是否尝试将这些库的使用替换为AppEngine接受的其他库?谢谢,但我不是从客户端代码调用java.io.FilePermission。在我的应用程序中,我将两个源链接到我的项目,其中一个称为“LibRemoteServices”,其中有一个“Utilities.java”文件将在最后调用该类。但是客户端代码和链接的源代码都在不同的包和文件夹中。顺便说一句,我得到一个错误,上面说:“Google App Engine的java运行时环境不支持java.io.FileOutput(也是java.rmi.NoSuchObjectException)”。我从应用程序引擎验证中排除了“Utilities.java”,但在运行时仍然会遇到相同的错误。那么,我该怎么办?是否尝试将这些库的使用替换为AppEngine接受的其他库?谢谢你的应用程序中那些你只能读不能写的东西。啊哈,谢谢。最后我放弃了使用AppEngine,因为我真的需要编写一些临时文件。Thx!:)@艾琳为什么?我还没有看到过一个需要编写临时文件的用例——文件只是存储数据的多种方法之一。而应用程序中的那些方法你只能读,不能写。啊哈,谢谢。最后我放弃了使用AppEngine,因为我真的需要编写一些临时文件。Thx!:)@艾琳为什么?我还没有看到一个需要编写临时文件的用例——文件只是存储数据的多种方法之一。
private static final String tempDirectoryPath =
System.getProperty("java.io.tmpdir")+"/tmp-andami";