Я запускал этот код, и он отлично работал в среде IDE NetBeans, но как только я создал JAR-файл и запустил его, щелкнув, произошел сбой и возникло NullPointerException
String sepChar = File.separator;
File homeFolder = new File(System.getProperty("user.dir"));
File dataFolder = new File(homeFolder.getAbsolutePath() + sepChar + "Saved Images");
System.err.println("data files is folder: "+dataFolder.isDirectory());
System.err.println("data files is file: "+dataFolder.isFile());
System.err.println("data files: "+dataFolder.listFiles());
System.err.println("data folder: "+dataFolder);
System.err.println("data folder path : "+dataFolder.getAbsolutePath());
File[]files = dataFolder.listFiles();
for(File f:files){...}
Этот код дает сбой на for(File f:files)
Код обращается к папке на моем флеш-накопителе, и я проверил путь, и все в порядке.
Вывод операторов println показан ниже: Первый набор предназначен для IDE, а второй — для командной строки:
Вывод IDE:
data files is folder: true
data files is file: false
data files: [Ljava.io.File;@a298b7
data folder: F:\JambTextProject\Saved Images
data folder path : F:\JambTextProject\Saved Images
Вывод командной строки (полученный при запуске java -jar jarName.jar):
data files is folder: false
data files is file: false
data files: null
data folder: F:\JambTextProject\dist\Saved Images
data folder path : F:\JambTextProject\dist\Saved Images
Так что же это может быть? Почему код хорошо работает в среде IDE, но падает при запуске из jar-файла? На флэш-накопителе 391 МБ свободного места, а размер папки, к которой нужно получить доступ, составляет 163 МБ, а ее размер на диске составляет 292 МБ.
File.listFiles
. - person Andy Turner   schedule 12.10.2015jar
находится в папкеdist
, но ваш код из IDE выполняется непосредственно изJambTextProject
, по крайней мере, так кажется из путей, которые ваша программа выводитF:\JambTextProject\Saved Images
иF:\JambTextProject\dist\Saved Images
- person Titus   schedule 12.10.2015