lo que sería una buena manera de cargar dinámicamente archivos de clase Java, por lo que un programa compilado en un frasco puede leer todos los archivos de clase en un directorio y usarlos, y cómo se puede escribir los archivos para que tengan el nombre del paquete necesario en relación con el tarro?Método para cargar dinámicamente clases Java archivos
33
A
Respuesta
70
Creo que es un ClassLoader
que está buscando.
Le sugiero que comience por mirar el siguiente ejemplo que carga archivos de clase que no están en la ruta de clase.
// Create a File object on the root of the directory containing the class file
File file = new File("c:\\myclasses\\");
try {
// Convert File to a URL
URL url = file.toURL(); // file:/c:/myclasses/
URL[] urls = new URL[]{url};
// Create a new class loader with the directory
ClassLoader cl = new URLClassLoader(urls);
// Load in the class; MyClass.class should be located in
// the directory file:/c:/myclasses/com/mycompany
Class cls = cl.loadClass("com.mycompany.MyClass");
} catch (MalformedURLException e) {
} catch (ClassNotFoundException e) {
}
1
Si agrega un directorio a la ruta de clase, se puede añadir después de clases se inicia la aplicación y las clases se pueden cargar tan pronto como se hayan escrito en el directorio.
7
MyClass obj = (MyClass) ClassLoader.getSystemClassLoader().loadClass("test.MyClass").newInstance();
obj.testmethod();
o
MyClass obj = (MyClass) Class.forName("test.MyClass").newInstance();
obj.testmethod();
Cuestiones relacionadas
- 1. Cargar dinámicamente las clases en Objective-C?
- 2. Java: cargar dinámicamente varias versiones de la misma clase
- 3. JQuery para cargar el archivo Javascript dinámicamente
- 4. ¿Cómo cargar clases anidadas en Java?
- 5. Java dinámicamente Cargando una clase
- 6. Cargar un CBitmap dinámicamente
- 7. ¿Cómo cargar una clase Java dinámicamente en android/dalvik?
- 8. C# clases para recuperar archivos?
- 9. Java: método de pseudo-setter para las clases inmutables
- 10. Buscar archivos Java jar (ear, war, ...) para la clase/método
- 11. ¿Puedo cargar automáticamente archivos de funciones sin clases en PHP?
- 12. ¿Cómo busca Java eficientemente los archivos jar para las clases?
- 13. Java .properties archivos como clases fuertemente tipadas
- 14. Cargando clases dinámicamente desde el jar
- 15. JBoss 7: cómo cargar dinámicamente jar
- 16. cargar dinámicamente la biblioteca estática?
- 17. Uso de Java Compiler API para compilar varios archivos java
- 18. Crear clases dinámicamente en matlab
- 19. Mejor método para generar nombres de archivos únicos al cargar archivos PHP
- 20. ¿Cómo uso Java ClassLoader para cargar un archivo de la ruta de clases?
- 21. Error al cargar viewstate al cargar dinámicamente controles diferentes
- 22. Forzar clases secundarias para reemplazar el método
- 23. Imagen de Silverlight: cargar URL dinámicamente?
- 24. Cómo cargar la página dinámicamente en iframe
- 25. ¿Requiere dinámicamente archivos?
- 26. Biblioteca C++ para cargar archivos Excel (.xls)
- 27. Para cargar archivos .tiff en C#
- 28. Validación para archivos grandes al Cargar
- 29. Cómo usar Python/CGI para cargar archivos
- 30. ¿Es posible usar Ajax para cargar archivos?
+1 URLClassLoader es el camino a seguir! – OscarRyz
Sí, creo que ClassLoader es lo que estoy buscando. Sin embargo, ¿puedes pensar en una forma de usar efectivamente la clase cargada? Podría hacerlo implementar una interfaz ... pero ¿cómo podría hacer referencia a esa interfaz? Hmm ... tal vez si tuviera que agregar el jar compilado como un jarrón externo ... en ese caso, ¿a qué debería llamar el paquete de la clase cargada? Si tengo: /thing/myjar.jar y thing/loadedclasses/class.class, ¿cuál sería el paquete declarado para esa clase? – MirroredFate
Sí, tendría que aceptar una interfaz o clase abstracta que implemente/extienda la clase a cargar. (O confíe completamente en la reflexión de las clases cargadas). – aioobe