¿Dónde se busca javafx.scene.image.Image (“flower.png”) para flower.png?

Me gustaría saber para qué sirve el algoritmo de resolución de ruta relativa del constructor de la imagen JavaFX:

  1. Aplicaciones independientes.
  2. Navegador implementado aplicaciones.
  3. Aplicaciones implementadas en Webstart.

Si el algoritmo puede buscar en varias ubicaciones, me gustaría saber cuáles son para cada uno de los escenarios de implementación anteriores.

Si el comportamiento de las aplicaciones independientes es diferente cuando la aplicación se coloca en un contenedor, también me gustaría saberlo.

A continuación, el usuario proporciona una ruta relativa a la new Image(String url) que será relativa contra el archivo de trabajo de la aplicación, también System.getProperty("user.dir") como System.getProperty("user.dir")

  1. Para la aplicación independiente, es una carpeta desde la que inició una aplicación
  2. Para la aplicación de inicio web que se ejecuta desde la línea de comandos ( javaws myfxapp.jnlp ) funciona de la misma manera que con la aplicación independiente
  3. Para la aplicación de inicio de plugin o webstart cargada desde el navegador, no puede estar seguro de la ubicación del directorio de trabajo. Depende del navegador e incluso de los complementos instalados para ese navegador.

Así que la dirección general es: para aplicaciones independientes, use la url misma manera que la usará en el new File(String url) . Para jnlp / plugin use url completo con protocolo o enfoque Class.getResource() .

Actualización: tenga en cuenta que este comportamiento se aclarará y cambiará en 2.2. Ver http://javafx-jira.kenai.com/browse/RT-18291

El siguiente comentario es de RT-18291 y describe los cambios previstos para 2.2:

Martin Sladecek agregó un comentario – 15 de mayo de 2012 10:53 AM Después de la discusión con Richard Bair, decidimos cambiar el comportamiento actual (no documentado) de las rutas. Actualmente, son tratados como user.dir relativo. Toda la ruta, con o sin barra diagonal inicial, se resolverá ahora en relación con la ruta de clase, que será coherente con CSS y más se corresponderá con lo que los usuarios podrían esperar. Para las rutas relativas de usuario.dir, aún se puede usar la URL “archivo:”.

La respuesta es “/” si está utilizando getClass().getResourceAsStream() , es decir, la raíz de su archivo jar (dentro de él). No user.dir ni donde se aloja el paquete

  1. directorio de búsqueda donde están presentes los archivos de clase (nombre de la clase getClass().getName().toString() ) relacionados con su archivo .java, copie y pegue su imagen allí
  2. Image image=new Image(getClass().getResourceAsStream("yourImageName.jpg")); es deber.

En NetBeans, el directorio donde están presentes las clases NetBeansProjects / JavaFXProjectName / build / classes / packageName /