¿Cómo puedo incluir un archivo jar en un paquete distinto al implementar

Tengo un script de hormiga que uso para construir mi aplicación J2EE y crear archivos jar. El problema es el siguiente: se necesitan dos archivos jar para que se ejecute la aplicación.

commons-math-2.0.jar
commons-math-1.0.jar

Sin embargo, solo quiero usar 2.0 para un paquete en particular dentro de la aplicación con el resto de la aplicación usando 1.0. ¿Cómo puedo compilar la aplicación para usar solo la versión 2.0, por ejemplo, con un nombre de paquete como com.naurus.eventhandler.risk? Nuevamente, estoy usando un script Ant, pero si hay una manera más fácil de hacer este tipo de cosas, estoy dispuesto a experimentar. ¡Gracias!

Respuesta 1

Si los dos tarros contienen diferentes clases / paquetes, no debería haber ningún problema para tenerlos a todos en la ruta de clase de la aplicación. Es entonces una cuestión de disciplina no usar las clases de un frasco en el otro paquete.

Sin embargo, supongo que estos dos frascos contienen principalmente las mismas clases / métodos. Hay muchas formas de usar diferentes versiones de las mismas clases:

  • Usando diferentes ClassLoaderinstancias. No lo calificaría como "fácil", lejos de eso significa abrir la puerta a un montón de errores desagradables. (se puede ayudar con una herramienta como OSGi)
  • Dividiendo la aplicación en dos procesos, estos procesos se inician en el mismo objetivo Ant y utilizan cualquier medio (CORBA, RMI, REST, etc.) para comunicarse.

Sin embargo, no recomendaría usar ninguno de estos métodos. Probablemente sería más simple hacer que todos sus paquetes usen la misma versión. ¿Hay alguna dificultad específica para hacerlo?

Respuesta: 2

Eso será problemático ya que ambos archivos JAR terminarán en el mismo classpath cuando implemente su aplicación J2EE. Puede lograr lo que está intentando intentar con los paquetes OSGI , que permiten que cada paquete tenga dependencias separadas. Sin embargo, esa es una refactorización relativamente grande de su aplicación.

En mi opinión, sería mejor:

a) Duplique las características que necesita de 2.0 (si el número es pequeño y la licencia lo permite, por ejemplo, empaquetar clases individuales).

o

b) Pase el tiempo para actualizar toda la aplicación a 2.0

Respuesta: 3

Mi pila: Elasticsearch 5.4 (con la versión correspondiente de java client y kibana) Hola, estoy usando mapeo dinámico al crear nuevos índices, y estoy usando la sección a continuación en mi mapeo para desconocidos ...

Me gustaría ejecutar el trabajo ~ inmediatamente con el planificador de cuarzo usando el almacén de datos jdbc. Sin embargo, tengo entre 20 y 30 segundos de retraso entre la programación y el disparo, aunque programo con now () ...

Actualmente estoy desarrollando un complemento Eclipse y estoy un poco perdido ... Tengo una naturaleza personalizada y quiero agregar un .jar al classpath de los proyectos del usuario cuando el usuario agrega esta naturaleza (quiero actualizar. ..

Estoy usando netty en modo cliente usando ClientBootstrap. Cuando intento recibir un mensaje la mayoría de las veces funciona bien y me devuelve solo un cuerpo, pero a veces (el servidor siempre devuelve la misma respuesta) ...