Подписанный 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 не работали правильно в апплете. После переписывания этого кода руками его окончательно работает.