tipos sintaxis qué que paquetes paquete organizacion importar funciones declaracion como java eclipse

java - sintaxis - Obtener el nombre de la clase actual, incluido el paquete



tipos de paquetes en java (3)

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.

Puedo 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 solo 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 ignora el nombre del paquete donde están los archivos .class reales.

¿Alguna sugerencia?

EDITAR: Aquí está la explicación, tomada de la descripción del ejercicio

sourcedir puede ser absoluto (comenzando con "/") o relativo a donde ejecutamos el programa desde

sourcedir es un argumento dado para el método principal. ¿cómo puedo encontrar ese camino?


El nombre completo es optativo de la siguiente manera:

String fqn = YourClass.class.getName();

Pero necesitas leer un recurso de ruta de clase. Entonces usa

InputStream in = YourClass.getResourceAsStream("resource.txt");


Hay una clase, Class , que puede hacer esto:

Class c = Class.forName("MyClass"); // if you want to specify a class Class c = this.getClass(); // if you want to use the current class System.out.println("Package: "+c.getPackage()+"/nClass: "+c.getSimpleName()+"/nFull Identifier: "+c.getName());

Si c representara la clase MyClass en el paquete mypackage , se imprimiría el código anterior:

Paquete: mi paquete
Clase: MyClass
Identificador completo: mypackage.MyClass

Puede tomar esta información y modificarla para lo que necesite, o ir a Class para obtener más información.


Utilice this.getClass().getCanonicalName() para obtener el nombre de clase completo.

Tenga en cuenta que un nombre de paquete / clase ("abC") es diferente de la ruta de los archivos .class (a / b / C.class), y que usar el nombre del paquete / nombre de clase para derivar una ruta es generalmente una mala práctica. Los conjuntos de archivos / paquetes de clase pueden estar en múltiples rutas de clases diferentes, que pueden ser directorios o archivos jar.