2012-07-16 20 views
5

¿Es posible cargar una clase desde un archivo jar y luego crear un objeto a partir de ella?Java - Crear una clase desde un archivo Jar

Nota: El archivo jar no está allí cuando se compila el programa, pero lo agrega el usuario más tarde y se carga cuando el usuario inicia el programa.

Mi código dice así: El usuario tiene un archivo jar con nada más que una clase java compilada. El usuario coloca este archivo jar en un directorio e inicia mi programa que examina el directorio y encuentra este archivo jar. A continuación, carga este archivo jar y crea una clase a partir de la cual crea un objeto y lo agrega a una matriz.

Tengo todo abajo excepto crear una clase del archivo jar (cargado como un archivo java.io) y luego crear y objeto de esa clase.

¿Algún ayuda? Gracias.

Respuesta

4

Está buscando Class#forName y Class#newInstance métodos.

This link proporciona un buen ejemplo sobre la inicialización de una clase de saber su nombre (extraído del enlace):

Class c = Class.forName("com.xyzws.AClass"); 
AClass a = (AClass)c.newInstance(); 

Un buen ejemplo de estas situaciones es usar JDBC (como el vínculo señala también), porque Inicialice un objeto del controlador de motor db que desea conectar. Recuerde que este controlador proviene de un contenedor importado en su proyecto, podría ser un contenedor para MySQL, Oracle o MSSQL Server, usted simplemente proporciona el nombre de la clase de controlador y deja que la API JDBC y el jar manejen el SQL.

Class.forName("org.gjt.mm.mysql.Driver"); 
Connection con = DriverManager.getConnection(url, "myLogin", "myPassword"); 

Además, para este problema específico de cargar el frasco de forma dinámica, hay preguntas y respuestas:

0

Un simple? sería para el usuario poner el archivo jar en el classpath.
De esa manera su código tendrá acceso a la clase que será cargada por la JVM

Editar: Incluso @ respuesta de Luiggi asume que el frasco se encuentra en la ruta de clase

+1

pero la idea es que el usuario realiza el frasco para ser cargado en el programa, no él –

Cuestiones relacionadas