Нет доступа на чтение / запись к файлу во время выполнения моего приложения GWT (java.io.FilePermission) - PullRequest
1 голос
/ 03 декабря 2010

Я получаю эту ошибку во время выполнения, когда пытаюсь запустить мое приложение 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" не существует (возможно, он скрыт), поэтому я не знаю, если этоэто проблема разрешения или проблема в том, что эти файлы не существуют и, следовательно, не могут быть прочитаны.

Все это происходит из строки, написанной в моем коде:

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

НоМне нужно написать этот файл, здесь или в другом PATH, мне все равно.Я пытался записать файл в «C: /», но получил тот же результат.

Есть идеи по этому поводу?Я что-то не так делаю?

Большое спасибо!


Но я использую доступ к моей файловой системе со стороны "серверного" пакета, а не "клиента", который содержитпереводимый код.

Я думал, что это можно будет сделать.

Итак, что я могу сделать?Должен существовать способ доступа к локальной файловой системе, не так ли?Или, по крайней мере, альтернативный способ сделать то же самое.

А как насчет размещения этого файла в локальной файловой системе развернутого приложения?Я имею в виду под каталогом "война" или что-то в этом роде.Если браузер может получить доступ к этой папке для чтения .jars и т. Д., Можно ли будет сделать то же самое, но с другой целью?

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Вы не можете читать или записывать временные файлы в App Engine. Вы можете читать файлы, которые были загружены с вашим приложением, но не можете записывать новые файлы или получать доступ к файлам вне вашего приложения.

2 голосов
/ 03 декабря 2010

GWT компилирует ваш код в JavaScript, который запускается в браузере.У JavaScript нет доступа к вашей файловой системе (по уважительной причине).

java.io.FilePermission не указан в справочнике по эмуляции JRE , поэтому его нельзя использовать в коде на стороне клиента.поэтому его даже нельзя скомпилировать с GWT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...