Подписанный Java-апплет не может получить доступ к локальной файловой системе - PullRequest
2 голосов
/ 31 октября 2011

Я написал апплет, который должен сравнивать файлы.Он вычисляет контрольную сумму CRC32 и затем выводит файлы с той же контрольной суммой.

Отлично работает с appletviewer и как отдельное приложение.Так что я упаковал и подписал его.Однако, когда я запускаю его в браузере, он не работает.

Хорошо запускается.Браузер запрашивает разрешения для этой подписи.Он показывает диалоговое окно JFileChooser, и я могу выбрать целевую папку.

Проблема в том, что он ничего не возвращает.Когда дело доходит до итерации файла или вычислений контрольной суммы, кажется, что это происходит спокойно.(Я использовал apache.commons FileUtils для итерации файла и вычисления контрольной суммы)

Он может открыть файл .txt и прочитать его содержимое.Я тестировал его в разных браузерах, с разными настройками безопасности, даже в Linux.

Я пытался переписать свой код, используя «AccessController.doPrivileged», как это:

    @Override
public ArrayList<String> doInBackground() {

    return AccessController.doPrivileged(new PrivilegedAction<ArrayList<String>>() {
        public ArrayList<String> run() {...});

... и он все еще ничего не делает.В чем его проблема?

Заранее спасибо.

1 Ответ

0 голосов
/ 03 ноября 2011

Проблема заключалась в том, что apache.commons и библиотеки Guava некорректно работали в апплете.После того, как этот код переписан руками, он наконец заработал.

...