2013-09-26 13 views
1

내가 FXML 레이아웃을 가지고 있고 외부 JS 파일을 (같은 src="http://blablabla.org/bla.js" HTTP)에 추가하려면, 나는 다음 시도했다 :외부 JS 스크립트를 FXML 레이아웃으로 가져 오는 방법은 무엇입니까?

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

<?import java.lang.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml"> 
<children> 
    <Button id="button" layoutX="126" layoutY="90" text="Click Me!" fx:id="button" 
      onAction="changeButtonLabel(event);"/> 
    <Label id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" prefHeight="16" prefWidth="69" 
      fx:id="label"/> 
</children> 

<fx:script source="http://localhost:8080/TestApplication/main_script.js"/> 

<stylesheets> 
    <String fx:value="hive://localhost:8080/TestApplication/main.css" /> 
</stylesheets> 
</AnchorPane> 

그러나 FXML는 나에게 다음과 같은 오류 반환 :

javafx.fxml.LoadException: javafx.fxml.LoadException: Base location is undefined. 
at javafx.fxml.FXMLLoader$ScriptElement.processStartElement(FXMLLoader.java:1332) 
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2314) 
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131) 
at org.hive.browser.BrowserController$2.run(BrowserController.java:65) 
Caused by: javafx.fxml.LoadException: Base location is undefined. 
at javafx.fxml.FXMLLoader$ScriptElement.processStartElement(FXMLLoader.java:1314) 
... 3 more 
Exception in runnable 
java.lang.NullPointerException: Children: child node is null: parent = Pane[id=contentPane] 
at javafx.scene.Parent$1.onProposedChange(Parent.java:316) 
at com.sun.javafx.collections.VetoableObservableList.add(VetoableObservableList.java:165) 
at com.sun.javafx.collections.ObservableListWrapper.add(ObservableListWrapper.java:144) 
at org.hive.browser.BrowserController$2$1.run(BrowserController.java:80) 
at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179) 
at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76) 

무슨 잘못을 내 암호로?

답변

0

오류 메시지는 "기본 위치가 정의되지 않았습니다"입니다. 나는 URL 앞에 "@"를 추가하고 코드에 상대적인 경로에 자바 스크립트를 넣는 것이 좋습니다. @ scripts/main_script.js. 여기서 scripts는 Java 코드가 위치한 디렉토리입니다.

관련 문제