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?
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.
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
- 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.
Amanhã se o bom Deus permitir e você desejar, posso te orientar melhor.
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
Bom dia, baixei o seu projeto de teste e tb não funcionou.