Autor
|
Tema: Consulta ruta relativa (Leído 14,390 veces)
|
athlit
Desconectado
Mensajes: 83
|
Buenos días a todos, llevo un par de días peleándome con un tema y por más que he mirado en internet no he sabido encontrar nada al respecto. Lanzó aquí la consulta por si alguien se ha encontrado con esto alguna vez y me pudiera dar alguna idea.
Muchas gracias a todos por adelantado.
Ahí va: (Intentaré ser breve y claro) Tengo una clase desde la que creo un fichero de texto (sin ponerle ruta), bien, si ejecuto la clase me crea el fichero de texto en la raiz donde tengo la aplicacion. Hasta aquí, ok.
El problema.... Si desde un JSP, envío unos datos a un servlet, y éste llama a esa clase para que cree el fichero, entonces me lo crea en la ruta donde tengo instalado Eclipse. Si genero el WAR y lo ejecuto en el Tomcat, el fichero me lo crea en la ruta del tomcat.exe.
Esto me rompe totalmente para trabajar con las rutas. Alguien sabe o se ha encontrado en alguna ocasión con una situación similar??
Yo entiendo que ejecute desde donde lo ejecute, debería crearme el ficherito en la raiz de la aplicacion, o sino, siempre en el mismo sitio.
Muchas gracias a todos.
Un saludo.
|
|
|
En línea
|
|
|
|
Chuidiang
|
Si no pones ruta, el directorio por defecto es el de ejecución de la aplicación. Si lanzas tu aplicación con eclipse, es el raíz de tu proyecto (porque eclipse te lo pone así). Si lanzas un servidor web con eclipse, es el directorio de eclipse. Si despliegas tu war en un Tomcat, el ejecutable es tomcat y el directorio es el del ejecutable de Tomcat.
En cualquier caso, esa ruta siempre puedes saber cual es ejecutando
String rutaDefecto = System.getProperty("user.dir");
Si tu aplicación es una aplicación web, con jsp o servlets y es ahí donde quieres escribir el fichero, lo suyo es que le preguntes al ServletContext cual es el path de la aplicación tuya (normalmente webapps/tu_aplicacion) y escribas en ese path.
Se bueno.
|
|
|
En línea
|
|
|
|
athlit
Desconectado
Mensajes: 83
|
Hola Chuidiang, en primer lugar muchas gracias por responder. Desconozco como funciona el ServletContext (se nota que soy nuevo? ), pero sabiendo eso ya me peleo para ver cómo puedo hacer lo que me dices. Es justo lo que necesitaba/buscaba. Te agradezco mucho la ayuda!! Un saludo!!
|
|
|
En línea
|
|
|
|
athlit
Desconectado
Mensajes: 83
|
Hola Chuidiang, supongo que se verá que soy nuevo en esto... Sigo con mi tema, no consigo saber la ruta relativa de la aplicacion donde ejecuto los JSP o Servlets. Si creo un fichero en la raiz desde la app java, me la deberia crear en la raiz de mi aplicacion (entiendo), sin embargo me la crea en la raiz de Eclipse (si ejecuto eclipse) o de Apache (si lo cuelgo en el Tomcat). Bueno, nada nuevo, lo que te comenté... solo que me desespero, jeje.
Importo la clase javax.Servlet.ServletContext, pero no me deja ver sus metodos para intentar rescatar la INFO que quiero y que me comentas en tu post.
¿Que hago mal?
Muchas gracias por adelantado.
Un saludo.
|
|
|
En línea
|
|
|
|
athlit
Desconectado
Mensajes: 83
|
Chuidiang.... no me respondas, hoy he conseguido un pasito más. Quiero mirar de sacarlo del todo ya.
Gracias y disculpa las molestias.
Un saludo!
|
|
|
En línea
|
|
|
|
josco
Desconectado
Mensajes: 199
|
yo tengo una clase que te regresa la ruta, donde estas trabajando, por ejemplo si corres el programa desde el ide te regresa la ruta donde se guardara, si ejecutas el jar te regresa la ruta donde esta el jar, asi si mueves el jar puedes usar esta clase para que te de la ruta donde esta el jar y al momento de guardar el fichero de texto le pones la ruta que te regresa esta clase y siempre se guardara donde tienes el .jar import java.io.File; import java.net.URL;
public class WorkingDirectory {
private static File WORKING_DIRECTORY;
public static File get() { if(WORKING_DIRECTORY == null) { try { URL url = WorkingDirectory.class.getResource("ejemplo.txt"); System.out.println(url); if(url.getProtocol().equals("file")) { File f = new File(url.toURI()); f = f.getParentFile() .getParentFile() .getParentFile(); WORKING_DIRECTORY = f; } else if(url.getProtocol().equals("jar")) { String expected = "!/util/ejemplo.txt"; String s = url.toString(); s = s.substring(4); s = s.substring(0, s.length() - expected.length()); File f = new File(new URL(s).toURI()); f = f.getParentFile(); WORKING_DIRECTORY = f; } } catch(Exception e) { WORKING_DIRECTORY = new File("."); } } return WORKING_DIRECTORY; } public String RutaJar() { return System.getProperty("user.dir"); // regresa la ruta System.out.print(System.getProperty("user.dir"));//imprime la ruta }
} al llamar a rutajar te regresara la ruta del jar si lo ejecutas. si lo ejecutas desde el ide te regresa la ruta de la carpeta src
|
|
|
En línea
|
|
|
|
athlit
Desconectado
Mensajes: 83
|
Muchas gacias a ambos por vuestra ayuda, me habeis ayudado mucho. Un saludo!
|
|
|
En línea
|
|
|
|
infectado
Desconectado
Mensajes: 1
|
hola a todos eh soy nuevo me llamo esteban x fa un favor alguien me puede ayudar a crear una clase en java que me permita hacer operaciones con polinomios xfa no les pido todo pero si una ayuda soy estudiante ok saludos
|
|
|
En línea
|
|
|
|
athlit
Desconectado
Mensajes: 83
|
Hola infectado, para buscar ayuda, lo ideal sería que crearas un hilo propio. Este hilo es para tratar otro tema diferente. Desconozco lo que comentas, siento no poder ayudarte.
Un saludo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
script vbs con ruta relativa (SOLUCIONADO)
Scripting
|
soyloqbuskas
|
3
|
10,053
|
26 Octubre 2011, 13:37 pm
por soyloqbuskas
|
|
|
Mostrar un contenido mediante ruta relativa
GNU/Linux
|
lalalalalala
|
1
|
3,312
|
8 Febrero 2012, 23:07 pm
por dato000
|
|
|
Como hacer la ruta relativa.
Bases de Datos
|
nolasco281
|
1
|
2,509
|
17 Diciembre 2014, 18:00 pm
por Hadess_inf
|
|
|
[Python] Definir ruta relativa por defecto
Python
|
MA40
|
0
|
2,054
|
3 Octubre 2016, 20:05 pm
por MA40
|
|
|
(Consulta) Hacer que una clase java busque los recursos en la ruta que indique
Java
|
class_OpenGL
|
2
|
2,655
|
11 Noviembre 2017, 21:57 pm
por class_OpenGL
|
|