ошибка времени выполнения inputstream не может быть нулевым

#java #android

#java #Android

Вопрос:

у меня есть эта ошибка во время выполнения в моем logcat:

 05-11 06:24:23.672: ERROR/AndroidRuntime(327): java.lang.RuntimeException: 
    Unable to create application net.osmand.activities.OsmandApplication:
    java.lang.IllegalArgumentException: InputStream cannot be null
  

после отладки я обнаружил исключение, каким образом??? в этом методе :

 private BaseOsmandRender loadRenderer(String name, Set<String> loadedRenderers) throws IOException, SAXException {
        InputStream is = null;
        if(externalRenderers.containsKey(name)){
            is = new FileInputStream(externalRenderers.get(name));
        } else if(internalRenderers.containsKey(name)){
            is = OsmandRenderingRulesParser.class.getResourceAsStream(internalRenderers.get(name));
        } else {
            throw new IllegalArgumentException("Not found "   name); //$NON-NLS-1$
        }
        BaseOsmandRender b = new BaseOsmandRender();
        b.init(is);
        loadedRenderers.add(name);
        List<BaseOsmandRender> dependencies = new ArrayList<BaseOsmandRender>();
        for (String s : b.getDepends()) {
            if (loadedRenderers.contains(s)) {
  

переменная «is» всегда равна null

любая помощь, пожалуйста

Комментарии:

1. is инициализируется в двух потоках … какой из них следует за новым FileInputStream или потоком OsmandRenderingRulesParser?

Ответ №1:

Если я правильно помню, getResourceAsStream возвращает null , если не может найти ресурс. Я подозреваю, что это причина вашей проблемы.

Ответ №2:

Существуют некоторые сумасшедшие ограничения для файлов в ресурсах приложения. Если вы пытаетесь загрузить ресурсы, попробуйте создать для них расширение *.mp3. Это волшебство.