Подписанный Java-апплет не может получить доступ к локальной файловой системе

Я написал апплет, который должен сравнивать файлы. Он вычисляет контрольную сумму 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 ответ

Решение

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

Другие вопросы по тегам