2017-02-22 59 views
1

Я пытаюсь восстановить Тетрис в JavaFX. Мой проект называется TetrisProject (C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject)Относительный путь не работает

Внутри Главная проблема с получением ресурсов. (C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject\tetris\src\be\kdg\tetris\Main.java)

public class Main extends Application { 
    primaryStage.getIcons().add(new Image("tetris\\resources\\images\\icon.png") 
} 

icon.png является значок Я хочу установить для моих окон. (C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject\tetris\resources\images\icon.png)

tetris\\resources\\images\\icon.png должен быть относительный путь, так как

File f = new File("."); 
System.out.println(f.getAbsolutePath()); 

запустить внутри Main.java выводит C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject\.

Относительный путь, который я написал для icon.png, верен, не так ли?

ответ

2

Путь не путь к файлу, это URL-адрес ресурса.

documentation говорит: «Если переданная строка не является допустимым URL-адресом, а путь вместо этого, в этом случае поиск искажается в пути к классам». Предположительно resources папка источника, так что путь должен был бы быть просто images/icon.png:

primaryStage.getIcons().add(new Image("images/icon.png")); 

Вы можете проверить, посмотрев на то, что в выводе/построить папку/bin (независимо от вашего IDE называет его). В зависимости от того, как ваша среда IDE настроена для обработки каталога ресурсов, изображение должно быть скопировано там, и именно здесь конструктор Image будет искать время выполнения. (Ваши исходные папки, очевидно, вообще недоступны во время выполнения.)

+0

Это работает! Большое вам спасибо, я не знал, что путь работал так. – m4t5k4

+1

Это в документации. Вы должны знать, что говорит документация. –

+0

@LewBloch Я только видел пример использования Image в школе, и в этом случае изображение находилось в том же каталоге, что и класс java. Наш учитель даже не объяснил, что Image получает ресурс через URL или classpath. Вы действуете так, как будто я обязан прочитать документацию обо всем на Java. – m4t5k4