Где javafx.scene.image.Image( "flower.png" ) искать flower.png? - программирование

Где javafx.scene.image.Image( "flower.png" ) искать flower.png?

Я хотел бы знать, что алгоритм относительного пути разрешения конструктора JavaFX Image для:

  • Автономные приложения.
  • Браузер развернул приложения.
  • Развернутые приложения Webstart.

Если алгоритм может выглядеть в нескольких местах, я хотел бы знать, что они представляют для каждого из вышеперечисленных сценариев развертывания.

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

4b9b3361

Ответ 1

Затем пользователь предоставляет относительный путь к new Image(String url), он будет относиться к workdir приложения aka System.getProperty("user.dir")

  • Для автономного приложения это папка, в которой вы запускали приложение из
  • Для запуска веб-запуска из командной строки (javaws myfxapp.jnlp) он работает так же, как и с автономным приложением
  • Для запуска плагина или приложения webstart, загруженного из браузера, вы не можете надежно убедиться в расположении рабочего места. Это зависит от браузера и даже от установленных плагинов для этого браузера.

Итак, общее направление: для автономных приложений используйте url так же, как вы будете использовать его в new File(String url). Для jnlp/plugin используйте полный url с протоколом или Class.getResource().

Обновление:. Обратите внимание, что это поведение будет уточнено и изменено в 2.2. См. http://javafx-jira.kenai.com/browse/RT-18291

Следующий комментарий относится к RT-18291 и описывает предполагаемые изменения для версии 2.2:

Martin Sladecek добавил комментарий - 15 мая 2012 10:53 После обсуждения с Ричардом Баиром мы решили изменить текущее (недокументированное) поведение для путей. В настоящее время они рассматриваются как user.dir relative. Весь путь, с или без ведущей косой черты, теперь будет разрешен как относительный к classpath, который будет соответствовать CSS, и больше соответствует ожиданиям пользователей. Для относительных путей user.dir URL-адрес "file:" может использоваться по-прежнему.

Ответ 2

Ответ: "/", если вы используете getClass().getResourceAsStream(), т.е. корень вашего файла jar (внутри него). Не user.dir и где размещен пакет

Ответ 3

  • каталог поиска, в котором содержатся файлы классов (имя класса getClass().getName().toString()), связанные с вашим .java файлом, скопируйте и вставьте изображение туда
  • Image image=new Image(getClass().getResourceAsStream("yourImageName.jpg")); должен быть.

В NetBeans находится каталог, в котором присутствуют классы NetBeansProjects/JavaFXProjectName/build/classes/packageName/