Pregunta

He hecho un applet de Java que depende de algunos libriaries de terceros, así como un archivo DLL que se llama a través de JNI. Estos serán, obviamente, no pueden instalar en equipos clientes. ¿Hay alguna forma de empaquetar estos libriaries de terceros y archivos DLL externa dentro de mi JAR del applet para que pueda ser ejecutado por cualquier cliente con una base de instalación de Java?

¿Fue útil?

Solución

El uso de JNI dentro de una aplicación web es una receta para la acidez estomacal, especialmente en Windows.

  • Usted, evidentemente, no puede implementar la DLL dentro de su archivo WAR y probablemente requerirá un instalador independiente llevará a cabo por el programa de implementación de antemano.
  • Usted tendrá que asegurarse de que su java.library.path está configurado correctamente, que normalmente se realiza por la configuración en el servidor de aplicaciones en lugar de algo de despliegue en el archivo WAR.
  • La forma en que JNI une la clase nativa con la biblioteca va a causar dolores de cabeza cargador de clases si se intenta ejecutar más de una instancia de esa aplicación web. Una forma de evitar esto es para mover el archivo JAR que contiene en un cargador de clase compartida (como carpeta común de Tomcat), pero que tiene sus propias complicaciones.

Otros consejos

¿Hay alguna forma de empaquetar estos tercera libriaries partido

En Eclipse, bajo las propiedades del proyecto de Java (clic derecho), lo puede hacer a:

 Export... => Export as Runnable JAR

A continuación, le digo que empacar mis dependencias jar en dicho JAR exportado. El JAR exportado tendrá todas sus dependencias embalados en él.

alt text http://www.ubuntu-pics.de/bild /97131/selection_016_mg6IDm.png

No soy experto en el tema, pero hay son soluciones a todos estos problemas de trabajo. Puede ser que le dará un dolor de cabeza, pero algunas cosas sólo pueden hacerse de esta manera (y estoy bastante seguro de que su problema con el Entrust CSP es uno de esos).

Se puede echar un vistazo a OpenSign de la OpenOCES-proyecto . La magia sucede en org.openoces.opensign.client.applet.bootstrap.

también creo que JNLPAppletLauncher resuelve el mismo problema, pero no tengo ninguna experiencia con i.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top