Arquivo .jar não funciona no javafx-sdk-13.0.1

Olá, sou novo no mundo da programação e estou desenvolvendo uma aplicação em JavaFX 13, o JavaFX não vem mais com as novas versões do JDK e tive que baixar a parte e configurar o NetBeans e funcionou perfeito, o problema é que quando gera o arquivo .jar não funciona e o seguinte erro:
“Error: JavaFX runtime components are missing, and are required to run this application”

Alguma ajuda?

Tenta isso

estou usando o Netbeans.

Pesquisei e não tem nada referente a esse erro com o NetBeans.

Tá faltando na chamada os modules do JavaFX.

Basta coloca-los.

1 curtida

Boa tarde, poderia me indicar um passo-a-passo?

Boa tarde, consegui add as chamadas dos módulos e está funcionando via terminal com o comando “java -jar --module-path $PATH_TO_FX --add-modules javafx.controls,javafx.fxml Arquivo.jar”, gostaria de criar um atalho, mas não estou conseguindo

Pode coloca-lo dentro de um arquivo de lote.
Ou ainda criar usando o JLink, ele gera um arquivo de lote com uma JVM reduzida de acordo com o projeto, mas tambem pode no Jar criar um manifest colocando os modules.
nesse caso, instala um jdk normal e se desejar pode tirar as fontes da JVM.

Pelo NetBeans ou Eclipse tá simples gerar modularizado, no NetBeans procure por jlink no seu projeto.

Tem a opção tambem de usar o https://openwebstart.com/, sim, porque a Oracle descontinuou o Java Web Start, por causa que não existem mais plugins Java nos navegadores e ela não disponibiliza mais JRE como em versões mais antigas.

Mas o povo Open já deu um jeito.

O melhor dos mundos com a modularização seria a possibilidade do novo JPackage tools gerar nativos cruzados, mas quando se fala em nativos cruzados em Java, estamos falando
em nativos que levam junto uma JVM otimizada do projeto e nela tem toda a segurança e portabilidade do Java.

Isso significa estando no Linux por exemplo, se conseguiria gerar nativo para Linux, Windows, Mac, Solaris e por ai vai.

Pelo que o Kevin disse, no Java 14 ainda não será cruzado, mas já ví do povo do open source a possibilidade de usar os jmods e gerar cruzado.

Bom, vamos ver né.

Bom dia, estou pesquisando sobre o jlink, mas ainda não encontrei um artigo bom que explique bem sobre.

Bom dia.

https://docs.oracle.com/javase/9/tools/jlink.htm#JSWOR-GUID-CECAC52B-CFEE-46CB-8166-F17A8E9280E9

Você está usando NetBeans ?

Isso, estou usando o NetBeans.

Não consigo entender esse launcher do jlink.

É o seguinte :

Estando no Netbeans e depois de criar um projeto modular que usar jdk >= 9.

1.Botão direito mouse sobre o nome do projeto
2.Properties
3.Packaging
3.1 - Marcar Create JLink Distribution
4.Botão direito mouse sobre o nome do projeto
4.1 - Clean and Build

  1. Agora procura dentro da pasta do seu projeto o diretorio
    dist/jlink
    entra na pasta com o nome do seu Projeto
    Vai aparecer com alguma coisa desse tipo

drwxrwxr-x 2 jorge jorge 4096 jan 3 19:15 bin
drwxrwxr-x 4 jorge jorge 4096 jan 3 19:15 conf
drwxrwxr-x 3 jorge jorge 4096 jan 3 19:15 include
drwxrwxr-x 14 jorge jorge 4096 jan 3 19:15 legal
drwxrwxr-x 6 jorge jorge 4096 jan 3 19:15 lib
drwxrwxr-x 3 jorge jorge 4096 jan 3 19:15 man
-rw-rw-r-- 1 jorge jorge 664 jan 3 19:15 release

vá dentro do diretorio bin e veja que lá tem a chamada do programa e tambem a jvm modularizada;

Agradeço a ajuda, mas nada funcionou.:pensive:

Amanhã se o bom Deus permitir e você desejar, posso te orientar melhor.

Sim, aceito a ajuda.

Fiz tudo como orientado, mas não funcionou, gerou as pastas até com linha de comando, mas o --launcher da erro de que não contém uma classe main.

Oque pode estar errado?

jlink --module-path $PATH_TO_FX --add-modules javafx.controls,javafx.fxml --launcher start=comprasbr/ComprasBR.Main --output PATH_TO_OUTPUT

Error: java.lang.IllegalArgumentException: comprasbr does not have main class: ComprasBR.Main

  1. No NetBeans você já fez o projeto usando o JavaFX rodou ?
    Se não funcionou segue aqui um exemplo simples é só baixar o modularFXSimples.zip
    [RESOLVIDO].Jar baixado do site da Gluon, não abre!

  2. Por hora, esqueça de usar o JLink manualmente, faça tudo pelo NetBeans, conforme expliquei acima.

Bom dia, baixei o seu projeto de teste e tb não funcionou.