una ruta proyecto obtener carpeta java jar classpath resources

carpeta - obtener la ruta de mi proyecto en java



Recurso Classpath dentro de jar (3)

Tengo un proyecto A, que contiene algunos archivos java y un recurso de ruta de clase R.txt. Dentro del proyecto utilizo ClassLoader.getSystemResource ("R.txt"); para recuperar R.txt.

Luego tengo un proyecto B que incluye el archivo jar del proyecto A. Ahora getSystemResource ("R.txt") no encuentra el archivo de texto (y sí, todavía está en la raíz del archivo jar). Incluso intentar "/R.txt" como se sugirió en algún otro sitio no funcionó. ¿Algunas ideas?


¿ ClassLoader.getResource() ? En este momento simplemente está especificando que el cargador de clases del sistema se va a utilizar.


Aparentemente, su JAR no está cargado por el cargador de clases del sistema, por lo que getSystemResource() no puede funcionar. Esto debería funcionar:

ClassFromProjectA.class.getClassLoader().getResource("R.txt")

OMI más conveniente es poner recursos dentro del mismo paquete que las clases que los usan, para que pueda usar el más corto

ClassFromProjectA.class.getResource("R.txt")

(o, dentro de esa clase simplemente getClass().getResource("R.txt") )


Use getResource lugar de getSystemResource para usar un recurso específico para un cargador de clases dado en lugar del sistema. Por ejemplo, pruebe cualquiera de los siguientes:

URL resource = getClass().getClassLoader().getResource("R.txt"); URL resource = Foo.class.getClassLoader().getResource("R.txt"); URL resource = getClass().getResource("/R.txt"); URL resource = Foo.class.getResource("/R.txt");

Tenga en cuenta la barra diagonal Class.getResource al llamar a Class.getResource lugar de ClassLoader.getResource ; Class.getResource es relativo al paquete que contiene la clase a menos que tenga una barra diagonal, mientras que ClassLoader.getResource es siempre absoluto.