Java File.setWritable () и перестал работать правильно после JDK 6u18 - PullRequest
4 голосов
/ 14 марта 2011

У нас есть приложение Java с определенным модулем, который проверяет, является ли временный каталог «доступным для записи» перед выполнением его функции. Чтобы проверить это, у нас есть тест JUnit, который создает новый каталог, использует метод класса Java File setWritable(false), чтобы сделать каталог «недоступным для записи», затем передает этот каталог тестируемому модулю и ожидает получить IllegalArgumentException назад. Все это работало нормально долгое время под JDK 6u18.

Сегодня я обновил версию JDK до JDK 6u24 (текущий выпуск с сайта Sun на сегодняшний день). Этот модульный тест только что провалился с новым JDK. Я поспрашивал в своей команде и обнаружил, что кто-то еще пытался запустить JDK 6u23 на своей машине некоторое время назад и имел ту же проблему с тем же тестом JUnit (и только с этим тестом - все остальное работает нормально).

Кто-нибудь еще испытывал проблемы с методом setWritable() после обновления на более новый JDK? Есть идеи, как решить эту проблему?

Прежде чем вы спросите, я также попытался использовать метод setReadonly() в качестве альтернативы, но я получил тот же результат.

1 Ответ

5 голосов
/ 14 марта 2011

Если вы работаете в Windows, это, вероятно, связано с этой ошибкой: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6728842

Очевидно, setWritable(false) никогда не работал для каталогов в Windows, потому что флаг readonly фактически не делает каталог доступным только для чтения.

...