Hay manera de saber si existe una libraria antes de intentar cargarla?
Estoy haciendo un plugin, que depende en parte de cierta libreria que algunos usuarios tienen y otros no.
| |||
Respuesta: importar librerias condicionalmente Si hay manera si trabajas en Net Beans Vas a Tools o Herramientas segun el idioma y ahi es donde encuentras las librerias qe tienes |
| ||||
Respuesta: importar librerias condicionalmente Me refiero mas a la hora de correr el programa, y no a la hora de compilar. Para compilar estoy usando el and, definiendo dos librerias en el classpath. Pero no se si los usuarios van a contar con esa segunda libreria, comprendes? |
| |||
Respuesta: importar librerias condicionalmente Si la forma de definir las librerias la puedes definir tu, existe una clase nueva en Java 6 llamada ServiceLoader que se usa para recuperar las clases que hay en el classpath que implementen una interfaz dada. La forma "rupestre" de hacerlo es hacer un Class.forName() de una clase que esté seguro en el .jar y si da un error, es que el .jar no está en el classpath. S!
__________________ Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana. |
| ||||
Respuesta: importar librerias condicionalmente Gracias. Todavía no me queda del todo claro. forName() daría error si no encontrara la clase definida en el classpath. Y de echo va a dar error a aquellos usuarios que no hayan descargado aún la librería en cuestion: Cita: Se puede manejar ese error?java.lang.Class forName(String className): Carga una clase del classpath a partir de su nombre (nombre completo, con todos los paquetes. Si la clase no se puede cargar, porque no se encuentra en el classpath, se lanzará una java.lang.ClassNotFoundException. Acerca del ServiceLoader todavía no se nada. Veremos! |
| |||
Respuesta: importar librerias condicionalmente Lo que se hace es envolver el Class.forName con un try/catch y capturar el error. A grosso modo, algo como... Cita: Y así averiguas si está cargado o no.boolean existeJar = false; try { Class.forName("paq.quete.ClaseDelJar"); existeJar = true; } catch(Exception e) { // Aquí se podría poner una traza con la excepción, por si acaso // para que quede constancia y saber el tipo de excepcion que dió. } S!
__________________ Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana. |
| ||||
Respuesta: importar librerias condicionalmente Ah! buenísimo. Es decir que no tengo que importar la librería como hago con las demas, sino pasar a usar el forName(). Entendí. Gracias! Cita: boolean existeJar = false; try { Class.forName("artofillusion.polymesh.*"); Class.forName("artofillusion.polymesh.PolyMesh.*") ; existeJar = true; } catch(Exception e) {} |
| |||
Respuesta: importar librerias condicionalmente Te basta con una clase que esté dentro del jar para saber si existe o no. Eso sí, el Class.forName no sustituye a un import. Son para cosas diferentes. S!
__________________ Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana. |
Etiquetas: Ninguno |