Cómo empaquetar aplicación en Java con 11 dependencias no modulares

ः Amis258:

I desarrollar y distribuir una aplicación Java Swing que utiliza Apache Batik y JavaCV. He actualizado a través de Java 1.6, 7 y 8. Los instaladores para MacOS, Windows y Linux están construidas con Javapackager. Java 8 es finales de apoyo Ene '19 y no puedo encontrar una solución para empaquetar y distribuir al Java 11, la nueva versión LTS.

Ni JavaCV o batik producen frascos modulares pero han conseguido volver a empaquetar hasta el punto donde puedo compilar y producir un tarro de Java ejecutable en un 11, aplicación funciona bien, pero no se puede empaquetar para su distribución. Estaba planeando dejar caer a Java 10 para usar javapackager y ate el 11 de tiempo de ejecución de allí pero utiliza JLINK para producir un tiempo de ejecución de encargo, JLINK falla porque JavaCV y batik no son modulares. jdeps no producirán un módulo de info.class al parche y hacerlos modular debido a las referencias no satisfechas en batik y JavaCV, a pesar de que mi aplicación funciona bien sin ellos.

Como resultado Voy a tener que salir de la base de código en Java 8, y enviarlo incluso más tiempo, aunque no se admite.

Sé que hay una llamada para crear un reemplazo para javapackager pero eso no va a estar allí hasta bien después de Java 8 está en desuso. Y todavía había necesidad de proyectos de Batik y JavaCV refactorizar y construir frascos modulares para producir un tiempo de ejecución personalizado.

¿Alguien puede ofrecer ninguna otra solución, por favor? ¿Me he perdido algo? Gracias.

S Sebastian:

He tenido el mismo problema. Quería utilizar JDK 11, pero de acuerdo con JDK-8212780 PEC 343 está prevista para el 13 de JDK, por lo que tendremos que esperar un poco más. Empaquetado de aplicaciones "nativas" autónomos menores de Java 8 - 10 no fue un problema, ya que se incluyó el empaquetador (al menos en el Oracle JDK).

Hoy me enteré de este correo electrónico y pensé que me gustaría darle una oportunidad: Usted puede ver mi proyecto de ejemplo en github.com/skymatic/javafx11-test , que Empaqueté con éxito utilizando el back-portado jpackagerdesde la rama de desarrollo de JDK .

Lo que hice aquí:

  • Creado un nuevo proyecto HelloWorld usando OpenJDK 11 y 11 OpenJFX.
  • Descargado el empaquetador y invocarla desde la acumulación de Maven (nota que tiene que vivir con el JDK y que hay que configurar JAVA_HOMEpara que funcione ...)
  • Bono: He utilizado jdepspara averiguar la dependencia de mi frasco no modular y establecer el --add-modulesparámetro para producir una imagen en tiempo de ejecución más pequeña

Por supuesto, es aún más fácil para los proyectos modulares: En esta confirmación a mi proyecto de ejemplo se puede ver que he utilizado jpackagerparámetros 's para la ruta del módulo y el módulo principal en lugar de la ruta de clase y la clase principal.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=173607&siteId=1
Recomendado
Clasificación