1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema com .jar de JavaFX

Fala Galera beleza? Seguinte, eu estou tendo alguns problemas para gerar o executável ta minha aplicação pelo Eclipse.

Minha estrutura está da seguinte maneira:


br.com.aplicacao (Aqui estão contidos os arquivos FXML)

Principal.fxml

CadastroCliente.fxml

br.com.aplicacao.controller (Aqui estão os controladores)

PrincipalController.java

CadastroClienteController.java


Pois bem, dentro da Principal.FXML, eu tenho um Pane que carregam as demais telas do projetos, seguindo o código a seguir:

@FXML
private Pane painel;

private void trocarTela(String fxml) {
    try {
        URL url = getClass().getResource(fxml);
        FXMLLoader loader = new FXMLLoader(url);
        loader.setLocation(url);
        loader.setBuilderFactory(new JavaFXBuilderFactory());
        painel.getChildren().clear();
        painel.getChildren().add((Node) loader.load(url.openStream()));
    } catch (IOException ex) {
        Logger.getLogger(PrincipalController.class.getName()).log(
                Level.SEVERE, null, ex);
    }
}

@FXML
private void cadastroCliente(ActionEvent event) {
    trocarTela("../CadastroCliente.fxml");
}

Este método cadastroCliente é chamado na onAction de um menu.

Pois bem, quando eu executo pelo Eclipse funciona tudo direitinho. Executando pelo .jar, quando clico no menu dispara um NullPointerException

java.lang.NullPointerExceptionat br.com.aplicacao.controllers.PrincipalController.trocarTela(PrincipalController.java:42)

at br.com.aplicacao.controllers.PrincipalController.cadastroCliente(PrincipalController.java:56) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497)

Eu segui esses dois mini-tutoriais para gerar o .jar:

http://pt.wikihow.com/Criar-um-Arquivo-Execut%C3%A1vel-no-Eclipse

http://www.guj.com.br/java/33812-como-compilar-um-projeto-do-eclipse

O que será que está acontecendo?

  • Seus FXML estão recebendo os controllers corretos? Tipo, no teu CadastroCliente.fxml o controller declarado lá é o seu CadastroClienteController?

    Bruno Santiago   10 de set de 2015
  • Talvez para ter uma base do FX essa resposta te ajude: http://www.guj.com.br/45316-material-javafx

    Bruno Santiago   10 de set de 2015
  • Fala Bruno... Estão recebendo os controllers certo sim, tanto é que rodando a aplicação pelo eclipse funciona tudo direitinho! O problema é quando executo pelo .jar.

    André Donadon   10 de set de 2015
  • Via CMD da um java -version e vê está está com o java8, qlqr coisa cria uma variável de ambiente, JAVA_HOME

    Bruno Santiago   10 de set de 2015
  • Testei e nada... na realidade, a tela Principal abre (tanto Eclipse quanto .jar) mas quando clico no menu pra chamar a outra tela, no eclipse roda, no .jar gera o NullPointer

    André Donadon   10 de set de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags javafx jar ou faça a sua própria pergunta.