Обход файлов внутри запущенного jar (в Java 7)
Можно ли использовать новый Java 7 NIO file library
пройти по дереву каталогов в банке так же, как в обычной файловой системе?
У меня есть структура каталогов, я читаю изображения, из которых я хотел бы иметь возможность работать как в обычном режиме, так и упаковывая их в файл JAR и работая с java -jar.
Похоже, что новый класс FileSystem, а также FileVisitor должен быть в состоянии достичь этого, но имеется мало документации о том, как это может работать в банке. Я пробовал следующее:
private static final FileSystem fileSystem = FileSystems.getDefault();
public static final String workingDir = System.getProperty("user.dir");
Files.walkFileTree(fileSystem.getPath(workingDir, "\res\training\"), new FileVisitor<Path>() {
...
});
Это прекрасно работает для запуска из IDE или из командной строки, но при упаковке в виде jar выдает ошибки, похожие на:
Исключение в потоке "main" java.lang.Error:
java.nio.file.NoSuchFileException: C: \ Users \остаток пути\jar_folder\ res \ training at util.Main. (Main.java:47) Причина: java.nio.file.NoSuchFileException: C:\Users\остальная часть пути\папка jar\ res \ training
Очевидно, он пытается найти файлы в каталоге, в котором работает jar, а не внутри самого jar.