Consulta ruta relativa

Iniciado por athlit, 21 Mayo 2010, 11:41 AM

0 Miembros y 1 Visitante están viendo este tema.

athlit

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.

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.

athlit

Hola Chuidiang,
en primer lugar muchas gracias por responder.

Desconozco como funciona el ServletContext (se nota que soy nuevo?  :D), 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!!

athlit

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.

athlit

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!

josco

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

athlit

Muchas gacias a ambos por vuestra ayuda, me habeis ayudado mucho.
Un saludo!

infectado

 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

athlit

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.