Encontrar la ruta absoluta de un jar de mi aplicación

21 julio 2008 at 4:12 pm 3 comentarios

Hola, tenía uno de esos problemas tontos de los que uno está seguro que tiene que existir una solución más sencilla o elegante, pero que no encuentra.

Buscaba la ruta absoluta de un jar de mi aplicación para posteriormente leer una propiedad dentro de su descriptor MANIFEST.MF.

El caso es que a través del ClassLoader se puede localizar un recurso dentro del classpath de nuestra aplicación, pero claro, un jar en sí es parte del classpath pero no está dentro del classpath.

Para solucionar esto, lo que he hecho es localizar una clase en concreto del jar que quiero localizar:


URL url = ClassLoader.getSystemResource("org/apache/commons/pool/BaseObjectPool.class");

Esto nos da una ruta del estilo de:


jar:file:/D:/lib/jakarta-commons/commons-pool-1.2.jar!/org/apache/commons/pool/BaseObjectPool.class

Por lo que ahora bastará eliminar las partes sobrantes, el jar: del principio y la referencia a la clase que hemos utilizado para encontrar el jar. Con ello ya tenemos la referencia al jar y podemos leer la propiedad que buscamos del MANIFEST.

String url2 = url.toString().substring(4, url.toString().indexOf("!"));
JarFile ficheroJar = new JarFile(new File(new URL(url2).toURI()));
String version = (String)ficheroJar.getManifest().getMainAttributes().getValue("Implementation-Version");

Eso es todo. Sólo decir que seguramente existan mejores maneras de hacer esto. Si conoces una o encuentras una mejor, por favor,compártelo con todos mediante un comentario en esta entrada.

Entry filed under: Java. Tags: , .

Joda Time: rediseñando las librerías de fechas en Java Mi primera aplicación CakePHP (2)

3 comentarios Add your own

  • 1. piterd  |  4 septiembre 2008 a las 11:05 am

    Hola
    La solución que aportas funciona para los .jar que están dentro dentro del pathclass pero para los demás, a los que quiero acceder y que están dentro de paquetes de mi aplicación, no.
    No hay manera de poder acceder a ellos.Gracias de todas formas por tu aportación.

    Un saludo.

  • 2. Miguel  |  4 septiembre 2008 a las 11:36 am

    Hola Piterd, gracias por tu comentario.

    Si me describes un poco más tu problema, prometo intentar buscar una solución para completar más la información de la entrada.

    Saludos

  • 3. White_King  |  8 enero 2012 a las 12:03 am

    intento acceder a un .properties duera de mi jar pero no c como

Deja un comentario

Trackback this post  |  Subscribe to the comments via RSS Feed


Mi perfil

View Miguel Orbegozo's profile on LinkedIn

Feedjit

Feeds

Otros…

BlogESfera Directorio de Blogs Hispanos - Agrega tu Blog

Bitacoras.com

Add to Technorati Favorites