Звучит так, как будто ресурса с таким именем не существует.
Знаете ли вы, что Class.getResourceAsStream()
находит ресурс относительно пакета этого класса, а ClassLoader.getResourceAsStream()
- нет? Вы можете использовать переднюю косую черту в Class.getResourceAsStream()
, чтобы имитировать это, поэтому
Foo.class.getResourceAsStream("/bar.png")
примерно эквивалентно
Foo.class.getClassLoader().getResourceAsStream("bar.png")
Является ли этот на самом деле файлом (то есть определенным файлом в нормальной файловой системе), который вы пытаетесь загрузить? Если это так, лучше использовать FileInputStream
. Используйте Class.getResourceAsStream()
, если это ресурс, связанный каким-либо другим способом в jar-файле или в пути к классам; используйте FileInputStream
, если это произвольный файл, который может находиться где угодно в файловой системе.
РЕДАКТИРОВАТЬ: Еще одна вещь, о которой следует помнить, которая вызывала у меня проблемы до сих пор - если это сработало на вашем устройстве разработки, которое, как оказалось, Windows, и теперь происходит сбой на рабочем сервере, который, как оказалось, Unix, проверьте регистр имени файла. Тот факт, что разные файловые системы по-разному обрабатывают чувствительность к регистру, может быть болезненным ...