[RESOLVIDO] FXMLoader não consegue encontrar o caminho

`try {

        	FXMLLoader loader = new FXMLLoader();
            
            loader.setLocation(getClass().getResource("/br/inf/topsoft/View/inicio_2.fxml"));
            paneInicio = loader.load();
            inicioController = loader.getController();
            scrollPane.setContent(paneInicio);
        } catch (Exception e) {
            TopUtilidades.showErrorDialog(null, e, null, "Falha ao carregar página.");
        }`

Na execução dentro do projeto consigo executar de boa, mas quando exporto o projeto para um .jar
da o seguinte erro
javafx.fxml.LoadException:
file:/C:/Users/Matheus/Desktop/TopSync.jar!/br/inf/topsoft/View/inicio_2.fxml

O método getResource retorna URLs e elas só são válidas para caminhos no seu sistema de arquivos.

A partir do momento que seu arquivo está dentro de um JAR ou ZIP, você não vai conseguir acessá-lo através de um URL.

Utilize o método getResourceAsStream para obter um InputStream correspondente ao arquivo que está dentro do JAR, dessa forma:

try {
    FXMLLoader loader = new FXMLLoader();
    InputStream fxml = getClass().getResourceAsStream("/br/inf/topsoft/View/inicio_2.fxml");
    paneInicio = loader.load(fxml);
    inicioController = loader.getController();
    scrollPane.setContent(paneInicio);
} catch (Exception e) {
    TopUtilidades.showErrorDialog(null, e, null, "Falha ao carregar página.");
}
1 curtida

Funcionou, muito obrigado

1 curtida