traza servidor salida puede para org los jasperexception jasper hay este estado error encuentra diario completa compilar clase causa carpeta archivos java reflection plugins groovy jar

java - servidor - Implementación de complementos JAR



http 500 no se puede compilar la clase para jsp (2)

Tengamos una aplicación de Groovy / Java que debe usar un conjunto de clases, definidas en archivos *.jar externos (supongamos que se encuentran cerca del archivo ejecutable principal).

Entonces, la clase principal (llamémosla Main ) debería cargar el archivo plugin.jar en el tiempo de ejecución y llamar a algún método de instancia en la clase, definida en ese jar (supongamos que la clase tiene el nombre como jar - Plugin in nuestro caso).

La clase Main no pudo saber qué complementos tiene hasta que se ejecuta. java -jar argumentos CLASSPATH y java -jar run y simplemente hagamos la magia solo con código.

Entonces, ¿cómo se podría hacer esto y cómo debería plugin.jar el plugin.jar (usando Eclipse en mi caso) para cargarlo correctamente?

PD: sí, compilo mis fuentes geniales en el archivo jar. Pero necesito realizar una carga de clase e invocar exactamente sobre la marcha.


¡El secreto fue realmente simple!

Usar URLClassLoader hace el truco.

Entonces, el código de Groovy :

ClassLoader loader = new URLClassLoader((URL[]) [ new File("C://Users//errorist//workspace//javatest1//bin//").toURI().toURL() ]) Class c = loader.loadClass("src.SomeClass1") c.invokeMethod("main", (String[]) ["Hello", "World"])

Y el de Java :

File file = new File("C://Users//errorist//workspace//javatest1//bin//"); URL[] urls = new URL[] { file.toURI().toURL() }; ClassLoader loader = new URLClassLoader(urls); Class c = loader.loadClass("src.SomeClass1"); c.invokeMethod("main", new String[] { "Hello", "World!" });


El marco OSGi admite la carga dinámica de complementos. Hay varias implementaciones, incluida Equinox , que apuntala a Eclipse.