2012-08-14 9 views
7

Actualmente estamos investigando el uso de OneJar en nuestra aplicación (por varias razones), pero nuestra aplicación utiliza una cantidad de URLClassloaders personalizados para cargar extensiones de aplicación.OneJar y clase dinámica cargando

Cuando se incluye como un jar "OneJar", obtenemos ClassNotFound excepciones. Las clases en cuestión residen en el paquete incluido y simplemente confiamos en el mecanismo del cargador de clases para resolver la relación padre/hijo.

Eso es. Tenemos un interface común que se almacena en el Tarro incluido (que debe estar dentro del contexto del cargador de clases del padre). La extensión implementa este interface (lo que nos permite llamar a la extensión) y se basa en la capacidad del cargador de clases hijo para utilizar las capacidades de búsqueda de recursos del cargador de clases padre.

Alguien ha tenido alguna experiencia con esto o arrojó alguna luz sobre cómo podríamos resolverlo.

estaría interesado en otros mecanismos similares (para liar nuestra biblioteca de Jar en un solo recurso Jar, que no requiere el uso de unjar todo y tarro en un solo archivo)

+0

ya sabes, si tienes que amar el valor de la gente voto que abajo sin al menos tener la decencia de dejar un comentario sobre por qué sintió que era necesario hacerlo. No ayuda a nadie Sin una explicación amable, es difícil saber cómo mejorar la pregunta/respuesta en el futuro – MadProgrammer

Respuesta

6

encontré que estaba haciendo algunas suposiciones sobre cómo se creó nuestro cargador de clases.

que supone que el cargador de clases lo utilizaría de cargador de clases, ya que es el padre (es decir getClass(). GetClassLoader()) pero no fue

su lugar, se utiliza el SystemClassLoader. Esto significaba que cuando el cargador de clases hijo buscaba la interfaz compartida, no podía encontrarla (porque estaba mirando el SystemClassLoader y no el cargador de clases OneJar).

que rectificar esto añadiendo CustomClassLoader.class.getClassLoader() al constructor de nuestro cargador de clases personalizadas

+0

¿Podría aceptar su propia respuesta? – fglez

+0

@fglez Pensaron que era algo "hecho", pero si ayuda ... – MadProgrammer

Cuestiones relacionadas