[RESOLVIDO] JavaFX - Path relativo de arquivo CSS dentro do fxml

Boa tarde pessoal,

Gostaria de perguntar se alguém poderia me dar uma dica de como se indicar um arquivo CSS através do path relativo do mesmo. No código abaixo, se eu colocar o path relativo gera uma LoadException.

Código do fxml:

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.net.*?>
<?import java.net.URL?>
<?import javafx.scene.control.*?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.image.*?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.text.*?>
<?scenebuilder-stylesheet Form.css?>

<BorderPane styleClass="root" xmlns:fx="http://javafx.com/fxml" fx:controller="componentes.dialogs.control.CrtMensagem">
  <bottom>
    <HBox>
      <Button text="OK" fx:id="button"/>
    </HBox>
  </bottom>
  <center>
    <HBox>
      <Text fx:id="txMensagem" text="Mensagem" />
      <ImageView fx:id="imw" />
    </HBox>
  </center>
  <stylesheets>
    <URL value="@DL.css" />
  </stylesheets>
</BorderPane>

Exceção:

javafx.fxml.LoadException: Base location is undefined.
	at javafx.fxml.FXMLLoader$Element.processPropertyAttribute(FXMLLoader.java:281)
	at javafx.fxml.FXMLLoader$Element.processInstancePropertyAttributes(FXMLLoader.java:195)
	at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:568)
	at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2314)
	at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131)
	at componentes.dialogs.form.MsgConst.inicializaMensagem(MsgConst.java:90)
	at componentes.dialogs.form.MsgConst.dlgInfo(MsgConst.java:73)
	at formulario.Form.clickShow(Form.java:136)
	at formulario.Form.access$0(Form.java:135)
	at formulario.Form$1.handle(Form.java:114)
	at formulario.Form$1.handle(Form.java:1)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
	at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:28)
	at javafx.event.Event.fireEvent(Event.java:171)
	at javafx.scene.Node.fireEvent(Node.java:6863)
	at javafx.scene.control.Button.fire(Button.java:179)
	at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:193)
	at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:336)
	at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:329)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
	at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
	at javafx.event.Event.fireEvent(Event.java:171)
	at javafx.scene.Scene$MouseHandler.process(Scene.java:3328)
	at javafx.scene.Scene$MouseHandler.process(Scene.java:3168)
	at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3123)
	at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1563)
	at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2265)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:250)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:173)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:292)
	at com.sun.glass.ui.View.handleMouseEvent(View.java:528)
	at com.sun.glass.ui.View.notifyMouse(View.java:922)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
	at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
	at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
	at componentes.dialogs.form.MsgConst.dlgInfo(MsgConst.java:74)
	at formulario.Form.clickShow(Form.java:136)
	at formulario.Form.access$0(Form.java:135)
	at formulario.Form$1.handle(Form.java:114)
	at formulario.Form$1.handle(Form.java:1)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
	at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:28)
	at javafx.event.Event.fireEvent(Event.java:171)
	at javafx.scene.Node.fireEvent(Node.java:6863)
	at javafx.scene.control.Button.fire(Button.java:179)
	at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:193)
	at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:336)
	at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:329)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
	at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
	at javafx.event.Event.fireEvent(Event.java:171)
	at javafx.scene.Scene$MouseHandler.process(Scene.java:3328)
	at javafx.scene.Scene$MouseHandler.process(Scene.java:3168)
	at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3123)
	at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1563)
	at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2265)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:250)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:173)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:292)
	at com.sun.glass.ui.View.handleMouseEvent(View.java:528)
	at com.sun.glass.ui.View.notifyMouse(View.java:922)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
	at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
	at java.lang.Thread.run(Unknown Source)

Código que invoca o fxml:

	private static CrtMensagem inicializaMensagem(ActionEvent event,
			String url, Modality modality) {
		Parent root = null;
		FXMLLoader fxml = new FXMLLoader();
		try {
			if ((url != null) && (!url.isEmpty())) {
				root = (Parent) fxml.load(new URL(url));
			} else {
				root = (Parent) fxml.load(Class.class.getResource(
						MsgConst.getDlgInfo()).openStream());
			}

		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}

		Stage stage = new Stage();
		stage.setScene(new Scene(root));
		stage.initModality(modality);
		stage.initOwner(((Node) event.getSource()).getScene().getWindow());
		stage.show();

		return (CrtMensagem) fxml.getController();
	}

O arquivo css se encontra no mesmo diretório que o fxml, porém o erro só não ocorre se eu colocar o caminho real do arquivo (seguindo de C:).

Grato pela atenção.

Boa tarde pessoal,

Para que estiver passando o mesmo problema que eu é só colocar esta instrução antes de carregar o fxml:

...
 FXMLLoader fxml = new FXMLLoader();  
    try {  
        if ((url != null) && (!url.isEmpty())) {  
           //Esta instrução aqui
            fxml.setLocation(Class.class.getResource(url));
            root = (Parent) fxml.load(new URL(url)); 
        } else {  
            root = (Parent) fxml.load(Class.class.getResource(  
                    MsgConst.getDlgInfo()).openStream());  
        }  
...

Vlw