style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Rutas relativas en java y windows

Buen dia, espero me puedan orientar en un problema que tengo.

Mi problema es el siguiente: estoy haciendo un sistema en javafx y en el codigo hago referencia a varias rutas relativas que apuntan hacia archivos, imagenes, etc. Por ejemplo:
(Ruta java) Esta forma solo funciona en java.

     File url = new File("src\\controlador\\img\\iconoMail.jpg");

Pero cuando creo el instalador y lo instalo sobre windows y no encuentra estas rutas. Lo que hice para que las reconociera fue esto:
(Ruta windows) Esta forma funciona ya que esta instalado el sistema.

     File url = new File("..\\src\\controlador\\img\\iconoMail.jpg");

El problema es que es un sistema que cada vez se van desarrollando mas funcionalidades por lo cual tiene que estar haciendo referencia a las rutas de java para que compile el sistema en desarrollo. Hay alguna forma de poner las rutas relativas y que sean reconocidas tanto en java como en windows?

Agradesco de antemano cualquier ayuda.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Cuando dices: "Funciona en

Cuando dices: "Funciona en Java" te refieres a cuando estas en tu IDE? Como generas el instalador?

Al parecer lo único que pasa es que tu instalador pone el directorio de trabajo al mismo nivel que el proyecto. Bastaría que tu instalador copiara también la estructura de directorios y todos los recursos para que así cuando lo tengas que instalar en otra máquina encuentres las imagenes.

Suena a que tu "instalador" lo que hace es compilar las clases y ponerlas en algún directorio ( quizá classes/ que es hermanos de src/ por eso cuando lo ejecutas instalado sube un directorio y luego va a src )

Si, cuando digo funciona en

Si, cuando digo funciona en java me refiero cuando estoy en el IDE. Genero el instalador usando el programa "Inno setup compiler". Esta copiando toda la estructura del proyecto incluso en la carpeta que queda instalada ( C:\Program Files (x86)\Mi proyecto ) tiene la misma estructura que en el IDE.

Imagen de nomarlegnar

JSP

Pienso que tu problema es sacar la ruta de contexto de tu aplicación... yo no uso JavaFX por lo tanto desconozco si puedas aplicar lo que te comento a continuación...

Yo utilizo el contexto que va desde el JSP para trabajar con la conexion a la BD y a conseguir la ruta de mis items así....

tengo una clase llamada funciones.java
en el cual tengo el siguiente método.

funciones.java

public String getContexto(HttpServletRequest rqt) {
    return rqt.getContextPath().equals("/")? "": rqt.getContextPath();  
  }; // getContexto

creo un Bean de mi funciones.java

<jsp:useBean id="xUtil" class="sia.beans.utilerias.funciones" scope="session"/>

y lo invoco así para tener el contexto de mi aplicación sobre el mismo JSP usando el request de la página, que es la ruta donde se ejecuta mi aplicación en el servidor.

<%=xUtil.getContexto(request)%>

si no usas beans pues crea una instancia de la clase y utiliza el método...

String contexto;
Funciones funcion=new Funciones();
contexto=funcion.getContexto(request);

para el caso implementa esa función getContexto() y creo que con eso se resuelve lo del context...

Ese getContexto() te regresa una ruta que es la raíz de tu aplicación, ya de ahí tu partes para agregarle el directorio correspondiente, pero en base a lo que te regresa esta función.

Échate un clavado a HttpServletRequest

Espero haberte ayudado.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">