Рекурсивный метод работает во время отладки, но get зависает при запуске из JAR - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть следующие методы для рекурсивного извлечения изображений из папки:

private Collection<Image> GetImages(File file) {
    Collection<Image> result = new LinkedList<Image>();

    if (file.isFile()) {
        result.add(new Image(file));
        return result;
    }

    for (File f : file.listFiles(new DirAndImagesFilter())) {

        if (f.isDirectory()) {
            {
                result.addAll(GetImages(f));
            }
        } else {
            result.add(new Image(f));
        }
    }

    return result;
}

и вот код DirAndImageFilter:

public class DirAndImagesFilter implements FileFilter {

private final static String jpeg = "jpeg";
private final static String jpg = "jpg";
private final static String gif = "gif";
private final static String tiff = "tiff";
private final static String tif = "tif";
private final static String png = "png";

public boolean accept(File file) {
    if (file.isDirectory()) {
        return true;
    }

    String extension = getExtension(file);
    if (extension != null) {
        if (extension.equals(tiff)
                || extension.equals(tif)
                || extension.equals(gif)
                || extension.equals(jpeg)
                || extension.equals(jpg)
                || extension.equals(png)) {
            return true;
        } else {
            return false;
        }
    }

    return false;
}

/*
 * Get the extension of a file.
 */
static String getExtension(File f) {
    String ext = null;
    String s = f.getName();
    int i = s.lastIndexOf('.');

    if (i > 0 && i < s.length() - 1) {
        ext = s.substring(i + 1).toLowerCase();
    }
    return ext;
}

}

Когда яЗапуск моего приложения из NetBeans работает нормально, но когда я запускаю JAR-файл (который также генерируется NetBeans).Мое приложение застревает в этом методе.

Насколько я понимаю, JAR-файл должен вести себя точно так же, как приложение, работающее в Netbeans.Или я что-то здесь упускаю?

1 Ответ

2 голосов
/ 23 ноября 2011

Да, я сталкивался с такими вещами раньше.Я не вижу ничего плохого в вашем коде, который вы разместили здесь.

Я предполагаю, что вы читаете файлы, которые приходят из самой банки.Если это так, то это ваша проблема.Чтение "файлов" из банки не работает.

Это часто происходит, когда вы пытаетесь сделать что-то вроде:

SomeClass.class.getResource("myfile")

Это можно решить, работая с входными потоками, например

SomeClass.class.getResourceAsStream("myfile")

Это дикое предположение ... надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...