Назад | Перейти на главную страницу

Сервис Java не может отображать файлы в каталогах

Я разместил этот вопрос в Переполнение стека, и кто-то перенаправил меня сюда:

Всем привет. Я делаю службу Windows на Java, эта служба составляет список файлов в каталоге и записывает результаты в файл. Моя проблема в том, что когда я вызываю Java.File.isDirectory (), когда служба запущена, всегда получается ложь (она хорошо работает, когда я запускаю службу вручную, как и любую другую программу). Кроме того, если я попробую следующее: for (File F: directorio.listFiles ()) выдает исключение, когда я запускаю программу как службу. Я считаю, что это связано с разрешениями, потому что, когда я меняю учетную запись, в которой работает служба, на мои собственные учетные данные, она правильно перечисляет файлы. Вы знаете, есть ли обходной путь? (Измените политику Windows, другую специальную учетную запись, другой способ перечисления файлов в каталоге, что-то еще, возможно, мне не хватает). Заранее спасибо.

Спасибо за вашу помощь! Я обнаружил свою проблему, я читал путь из файла конфигурации, который, как я предполагал, находится в доме пользователя (мой дом и дом системы не совпадают ... моя ошибка). К сожалению, я этого не осознавал, потому что использовал переработанный класс (: S). Еще раз большое спасибо.

На основании документации для File.isDirectory (), похоже, у вас включен диспетчер безопасности. isDirectory требует включения разрешения checkRead, и вы можете проверить это самостоятельно, используя что-то вроде следующего (при необходимости отредактируйте):

SecurityManager security = System.getSecurityManager();
if(security)
    if(security.checkRead(FILE_PATH_HERE))
        // we have permission
    else
        // no permission

Добавление каталога в список разрешенных каталогов может быть, а может и не быть в вашем списке дел. Если это так, есть десятки ссылок Google с инструкциями. То же самое происходит, если вы хотите полностью отключить SM.