Me gustaría saber para qué sirve el algoritmo de resolución de ruta relativa del constructor de la imagen JavaFX:
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")
javaws myfxapp.jnlp
) funciona de la misma manera que con la aplicación independiente 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
getClass().getName().toString()
) relacionados con su archivo .java, copie y pegue su imagen allí 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 /