Qual é a melhor maneira de implantar o aplicativo JavaFX, criar aplicativos JAR e autocontidos e instaladores nativos

Estou usando o IntelliJ IDEA e tenho meu aplicativo JavaFX pronto para implantação. O problema é que quando eu gerar o arquivo JAR, ele não será executado, quando eu o executar na linha de comando, recebo uma exceção, FXMLLoadException, embora o projeto esteja funcionando perfeitamente no meu IDE.

As tarefas do Ant terminam com erros, depois de 15 minutos de construção, eu realmente não entendo qual é exatamente o problema.

Então, minha pergunta quais são as etapas certas para implantar um aplicativo JavaFX da maneira certa, qualquer tutorial ou guia será bem-vindo.

Um aplicativo Java pode ser empacotado de várias maneiras. Por favor, vá até a Visão Geral de Embalagem Java para encontrar tudo sobre isso. Um dos pacotes é um self-contained Java application .

Existem diferentes maneiras de criar esses pacotes:

  • Use as ferramentas javapackager que vem com o seu JDK
  • Tarefas do JavaFX Ant
  • JavaFX Maven Plugin para um projeto maven

O aplicativo independente é uma das maneiras de como seu aplicativo pode ser empacotado e é específico da plataforma. O pacote contém:

  • O pacote de aplicativos
  • Uma cópia privada do JRE

Uma lista de pacotes disponíveis pode ser encontrada aqui .

Vamos verificar as várias ferramentas disponíveis à nossa disposição e como usá-las:

Ferramenta JavaPackager

O JavaPackager Tool é a ferramenta mais básica e ajuda você a compilar, empacotar, assinar e implementar seus aplicativos Java (FX), sem escrever scripts adicionais. O arquivo javapackager.jar está localizado no diretório bin da instalação do JDK.

A lista de comandos, que podem ser usados ​​com ela, está disponível aqui .

Tarefas do JavaFX Ant

O JavaFX Ant Tasks ajuda você a empacotar seu aplicativo apenas criando um arquivo build.xml para o seu projeto.

Um conjunto de exemplos sobre como usar scripts ant para seu projeto pode ser encontrado aqui .

A lista de comandos que podem ser usados ​​com ela está disponível aqui .

Plugin JavaFX Maven

O JavaFX Maven Plugin aproveita o uso do aplicativo java de empacotamento na plataforma maven. Você pode empacotar seu aplicativo java baseado em maven adicionando um plugin ao projeto.

Este plugin IMHO, se o easiest de usar dos três. É uma ferramenta muito bem escrita, fácil de entender e tem extensa documentação.

Plugin JavaFX Gradle

JavaFX Gradle Plugin também é do autor do plugin maven. Tem todos os resources que o plugin maven tem, mas para Gradle 🙂

Leitura adicional:

  • Embalagem nativa para o JavaFX
  • Atualização das ferramentas de empacotamento do JavaFX

A Oracle tem um extenso guia sobre empacotamento em seus sites para o JavaFX 2 e o JavaFX 8 .

Se você precisar de ajuda para seu problema específico, poste o código e o stacktrace do erro que você recebe.

Se você usa o Maven, outra abordagem muito inteligente é usar o maven-shade-plugin ( link ). Ele constrói um grande flask de gordura com todas as dependencies dentro das quais você pode executar diretamente, sem quaisquer outras coisas para fazer. Você pode usar isso em combinação com o javafx-maven-plugin . Eu também tentei abordagens diferentes e joguei por um longo tempo e esta solução foi a única que realmente funciona. Além disso, foi fácil de configurar.

Aqui está o que você precisa adicionar ao seu pom.xml:

    org.apache.maven.plugins maven-shade-plugin 3.1.1     package  shade     your.package.name.Main        com.zenjava javafx-maven-plugin 8.8.3  your.package.name.Main     

Altere o nome do seu pacote dentro do mainClass para sombreamento e também o plugin javaFx e está pronto. Agora você pode construir seu aplicativo como sempre com o mvn package .