Estoy trabajando en un proyecto y un requisito es si el segundo argumento para el método principal comienza con '/' (para Linux) debe considerarlo como una ruta absoluta (no es un problema) , pero si no comienza con '/', debería obtener la ruta de trabajo actual de la clase y agregarle el argumento dado.Obteniendo el nombre de clase actual incluyendo el paquete
que pueda obtener el nombre de la clase de varias maneras: System.getProperty("java.class.path")
, new File(".")
y getCanonicalPath()
, y así sucesivamente ..
El problema es que esto sólo me da el directorio en el que se almacenan los paquetes - es decir, si tengo una clase almacenada en ".../project/this/is/package/name", solo me daría "/ project /" e ignoraría el nombre del paquete donde están los archivos .class reales.
¿Alguna sugerencia?
EDIT: Aquí está la explicación, tomada de la descripción del ejercicio
sourcedir puede ser absoluta (comenzando con “/”) o en relación con donde se corre el programa desde
sourcedir es un argumento dado para el método principal. ¿cómo puedo encontrar ese camino?
¿Qué hará si el código está empaquetado en un JAR (o no está en una estructura de carpeta/archivo como lo está asumiendo)? Es una suposición peligrosa; esto podría funcionar bien para un pequeño experimento, asignación de clase u otra situación desechable, pero POR FAVOR, no adquiera el hábito de hacer esa suposición para el código de calidad de producción. –
No tiene sentido encontrar la ruta al archivo de clase.Además, la descripción del ejercicio no menciona eso si lo lee detenidamente (* donde ejecutamos el programa desde * significa la ruta actual desde la cual el usuario llama al programa). –
¿Tal vez podría ayudarme a comprender mejor el requisito? Necesito comprobar que la discusión comience con un '/' (mencione en la descripción). si lo hace, solo úsalo como absoluto. como es. pero si no lo hace, ¿cómo debería tratarlo? –