Javafx não encontra arquivo fxml

3 respostas
javafx
N

Olá a todos. Copiei este código para depois estudá-lo. Mas não consigo fazer com que ele encontre o arquivo fxml. Estou usando Notepad++7.5.6 , JDK 1.8.

classe main

Blockquote

import java.io.FileInputStream;

import javafx.application.Application;

import javafx.scene.Scene;

import javafx.scene.control.Label;

import javafx.stage.Stage;

import javafx.fxml.FXMLLoader;

import javafx.scene.layout.Pane;
public class Principal extends Application {

public static void main(String[] args){

launch(args);

}
@Override
public void start(Stage primaryStage) throws Exception {
	//Label label = new Label("Meu texto legar");
	//Pane root = FXMLLoader.load(getClass().getResource("Layout2.fxml"));
	
	/*FXMLLoader loader = new FXMLLoader();
	loader.setClassLoader(getClass().getClassLoader()); 
	loader.setLocation(getClass().getResource("/fxml/PluginFXML.fxml"));*/
	
	FXMLLoader loader = new FXMLLoader();
	String arquivo = "Layout2.fxml";
	FileInputStream input = new FileInputStream(arquivo);
	Pane root = (Pane) loader.load(input);
	
	
	Scene scene = new Scene(root,850,400);
	
	primaryStage.setScene(scene);
	primaryStage.setTitle("Principal");
	primaryStage.setMinWidth(600);
	primaryStage.setMinHeight(400);
	primaryStage.setMaxWidth(900);
	primaryStage.setMaxHeight(600);
	
	primaryStage.show();
}

}

Blockquote

classe Controller

Blockquote
import javafx.fxml.FXML;

public class Controller implements Initializable {

@FXML // public sem o @FXML
private void initialize(){
	
	System.out.println("controller inicializado");
}

}

Blockquote

arquivo fxml

Blockquote

<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.Menu?> <?import javafx.scene.control.MenuBar?> <?import javafx.scene.control.MenuItem?> <?import javafx.scene.control.TableView?> <?import javafx.scene.control.TableColumn?> <?import javafx.scene.control.TextField?> <?import javafx.scene.control.TextArea?> <?import javafx.scene.layout.BorderPane?> <?import javafx.scene.layout.GridPane?> <?import javafx.scene.layout.HBox?> <?import javafx.geometry.Insets?>
<left>
	<GridPane hgap="5" vgap="5">	
		<padding>
			<Insets top="5" bottom="5" left="5" right="5"/>
		</padding>			
		
		<GridPane hgap="5" vgap="5">
			<GridPane.margin>
				<Insets top="5" bottom="5" left="5"/>
			</GridPane.margin>
			<Label text="Pesquisar:" GridPane.rowIndex="0" GridPane.columnIndex="0"/>
			<TextField GridPane.rowIndex="0" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS"/>
			
			<HBox GridPane.rowIndex="1" GridPane.columnIndex="1" alignment="CENTER_RIGHT" spacing="5">
				<Button text="Pesquisar" prefWidth="80"/>
				<Button text="Limpar" prefWidth="80"/>
			</HBox>		
		</GridPane>
		
		<TableView GridPane.rowIndex="1" GridPane.columnIndex="0" GridPane.vgrow="ALWAYS">
			<columns>
				<TableColumn text="Site/Serviço" prefWidth="120"/>
				<TableColumn text="Login" prefWidth="120"/>
			</columns>
		</TableView>
		
		<HBox GridPane.rowIndex="2" GridPane.columnIndex="0" alignment="CENTER_RIGHT" spacing="5">
			<Button text="Novo" prefWidth="80"/>
			<Button text="Editar" prefWidth="80"/>
			<Button text="Excluir" prefWidth="80"/>
		</HBox>
			
	</GridPane>
</left>

<center>
	<GridPane hgap="5" vgap="5">
		<padding>
			<Insets top="5" bottom="5" left="5" right="15"/>
		</padding>
		<Label text="Site/Serviço:" GridPane.rowIndex="0" GridPane.columnIndex="0"/>
		<TextField GridPane.rowIndex="0" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS"/>
		<Label text="Login:" GridPane.rowIndex="1" GridPane.columnIndex="0"/>
		<TextField GridPane.rowIndex="1" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS"/>
		<Label text="Senha:" GridPane.rowIndex="2" GridPane.columnIndex="0"/>
		<TextField GridPane.rowIndex="2" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS"/>
		<Label text="Observações:" GridPane.rowIndex="3" GridPane.columnIndex="0"/>
		<TextArea GridPane.rowIndex="3" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS"/>
		
		<HBox GridPane.rowIndex="4" GridPane.columnIndex="0" GridPane.columnSpan="2" alignment="CENTER_RIGHT" spacing="5">
			<Button text="Confirmar" prefWidth="80"/>
			<Button text="Cancelar" prefWidth="80"/>
		</HBox>
		
	</GridPane>
</center>
> Blockquote

o erro

Blockquote

C:\pastaFx>java FxFXMLExample3

Exception in Application start method

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Lau

ncherImpl.java:389)

at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImp

l.java:328)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)

Caused by: java.lang.RuntimeException: Exception in Application start method

at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherIm

pl.java:917)

at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(

LauncherImpl.java:182)

at java.lang.Thread.run(Unknown Source)

Caused by: javafx.fxml.LoadException:

unknown path:7
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
    at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103)
    at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:
  1. at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FX
    MLLoader.java:971)
    at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:22
  2. at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.ja
    
va:744)

at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707)

at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527)

at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)

at FxFXMLExample3.start(FxFXMLExample3.java:27)

at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161

(LauncherImpl.java:863)

at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(Platfor

mImpl.java:326)

at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.

java:295)

at java.security.AccessController.doPrivileged(Native Method)

at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformI

mpl.java:294)

at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatch

er.java:95)

at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)

at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.ja

va:177)

… 1 more

<strong>Caused by: java.lang.ClassNotFoundException: FXFXML.FxFXMLController</strong>

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:

920)

… 16 more

Exception running application FxFXMLExample3

C:\pastaFx>

Blockquote

O arquivo está na pasta citada. Já tentei copiar outros exemplos. Mas dá o mesmo erro. Podem me ajudar?

3 Respostas

N

Observção: arquivo main, layout e controller estão na mesma pasta.

R

Cara ja tive esse problema, a classe controler esta na mesma pasta do fxml,
se tiver tenta limpar e construir o projeto, as alterações só funcionar se mandar contruir o projeto.

M

Usa a barra antes do nome do arquivo

Criado 4 de junho de 2018
Ultima resposta 5 de jun. de 2018
Respostas 3
Participantes 3