2015-04-22 2 views
0

Здравствуйте, я недавно изменил свой проект JavaFX8 на Maven, все работает хорошо, за исключением загрузки файлов, расположенных рядом с JAR. Это работало раньше, но не больше.Файл Maven Jar читает внешние изображения

Структура

Папки:

иконка для загрузки расположены в/цели/иконки JAR файл находится в/целях

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

String applicationDir = (new File(".")).getAbsolutePath(); 
    String iconsDir = applicationDir+"/target/icons/"; 
    File[] files = new File(iconsDir).listFiles(); 


    for (File file : files) { 

     if (file.getName().endsWith(".png")) { 
      System.out.println(file.getAbsolutePath()); 

      Image img = new Image(file.getAbsolutePath()); 
      ICONLIBRARY.put(file.getName().split("\\.")[0].toUpperCase(), img); 
     } 

    } 

It входит в цикл и находит файлы, но он вылетает при вызове нового Image (file.getAbsolutePath()) с Недопустимый URL: Недопустимый URL или ресурс не найден. Исключение.

Я пробовал всевозможные вещи с помощью функции ExternalForm() и так далее, но ничего не помогло, я все равно получаю исключение, независимо от того, что я делаю.

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

Заранее спасибо

Роби

+0

Где вы разместили эти значки в исходном дереве? – khmarbaise

+0

Привет это иконки расположены рядом с JAR-файла здесь полный путь , например: /Users/robi/git/projectxy/target/icons/icon_small.png банка находится на /Users/Роби/мерзавец/projectxy /target/jarfile.jar Но, как я уже сказал, цикл, чтобы найти файлы, работает только для того, чтобы передать имя файла на изображение не удалось. –

ответ

0

Попробуйте это:

URL resource = YourClass.class.getResource("FILENAME"); 
Paths.get(resource.toURI()).toFile(); 

Найдет любой ресурс, пока ресурс является файлом, а не запись JAR.

+0

Это будет работать, только если значки будут упакованы в файл jar, который не похож на него. – khmarbaise

+0

Точно, я хочу, чтобы они разделились, потому что клиент должен иметь возможность изменять значки. –

1

Привет, ребята, я убежал!

Решение было:

Image img = new Image(file.toURI().toString()); 

Спасибо за вашу помощь

Что странно, это делает различие в том, что из каталога я бегу Java -jar jarfile.jar это работает только если я сделайте это в той же папке

Смежные вопросы