Кажется, что вы не проверяете файлы в первую очередь, но ресурсы класса, то есть ресурсы, загружаемые с помощью API-интерфейсов классов загрузчиков, таких как Class#getResource
или Class#getResourceAsStream
. Оба API, возвращают null
, когда ресурс не может быть найден без каких-либо исключений метания (что, вероятно, будет выброшен позже в программе какой-либо другой API)
код, чтобы проверить, таким образом, так же просто, как эта функция
@Deprecated
private void isAppPackagedCorrectly(String res) {
if (getClass().getResource(res) == null) {
throw new RuntimeException("Missing resource " + res);
}
}
, который может использоваться в петле. В предоставленном фрагменте кода я пометил API как устаревший, потому что вы, вероятно, не хотите влиять на запуск приложения с проверкой упаковки. Просто сразу выполните процесс сборки, и это не будет происходить случайно.
еще два случайных советов:
- ведущих слеш
/
имеет особое значение при построении абсолютного имени ресурса. Check the documentation.
- я всегда немедленно проверить, что ресурс доступен с небольшим количеством Гуавы коды:
Preconditions.checkNotNull(getClass().getResource(res))
Рассмотренного 'java.io.File'? –