2016-11-01 3 views
2

Я создаю приложение в JavaFX. Я получил эту ошибку при открытии сценария: «Не удалось открыть Loggin.fxml. Не удалось открыть операцию. Убедитесь, что выбранный файл является допустимым документом fxml».scenebulider не может открыть файл fxml

При нажатии на кнопку "Показать детали", он показал мне эту ошибку:

java.io.IOException: javafx.fxml.LoadException: 
/F:/Anusha/stophubsourcetree3/src/application/GetStarted.fxml 

    at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:92) 
    at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:80) 
    at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:95) 
    at com.oracle.javafx.scenebuilder.kit.editor.EditorController.updateFxomDocument(EditorController.java:2370) 
    at com.oracle.javafx.scenebuilder.kit.editor.EditorController.setFxmlTextAndLocation(EditorController.java:655) 
    at com.oracle.javafx.scenebuilder.app.DocumentWindowController.loadFromFile(DocumentWindowController.java:386) 
    at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.performOpenFiles(SceneBuilderApp.java:579) 
    at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleOpenFilesAction(SceneBuilderApp.java:447) 
    at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleLaunch(SceneBuilderApp.java:427) 
    at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStartGeneric(AppPlatform.java:139) 
    at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStart(AppPlatform.java:106) 
    at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.start(SceneBuilderApp.java:371) 
    at com.sun.javafx.application.LauncherImpl$8.run(LauncherImpl.java:837) 
    at com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335) 
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301) 
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39) 
    at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: javafx.fxml.LoadException: 
/F:/Anusha/stophubsourcetree3/src/application/GetStarted.fxml 

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617) 
    at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2864) 
    at javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2708) 
    at javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2677) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2517) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425) 
    at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:89) 
    ... 22 more 
Caused by: java.lang.ClassNotFoundException: com.jfoenix.controls.JFXTextField 
    at java.lang.ClassLoader.findClass(ClassLoader.java:530) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2932) 
    at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2921) 
    at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2862) 
    ... 27 more 

мой main.java:

package application; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.stage.Stage; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 


public class Main extends Application 
{ 

    @Override 

    public void start(Stage primaryStage) 
    { 
     try 
     { 
      Parent root =FXMLLoader.load(getClass().getResource("/application/GetStarted.fxml")); 
      Scene scene = new Scene(root); 
      scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
      primaryStage.setScene(scene); 
      primaryStage.setTitle("LOGIN"); 
      primaryStage.setResizable(false); 
      primaryStage.show(); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) 
    { 
     launch(args); 
    } 

} 
+0

Похоже, что вы не включили в файл фляги для вашей сторонней библиотеки в библиотеке сценариста. См. Http://stackoverflow.com/questions/29601190/include-controls-fx-in-scene-builder для аналогичного вопроса (хотя и в другой библиотеке). –

+0

Где я могу найти эти файлы jar из сторонней библиотеки? – mistletoe

+0

Умм, где бы вы их ни разместили? Если вы используете стороннюю библиотеку, вы, вероятно, загрузили и установили ее где-нибудь. Только вы знаете, где. –

ответ

2

Проблема, что SceneBuilder (Scene Builder является 8.2.0 , он был выпущен 18 мая 2016 года) в текущей версии, когда он открывается, он должен сначала загрузить библиотеки и открыть файл fxml. Это похоже на ошибку, я найду ссылку и отправлю ее ...

Хотя это будет исправлено в следующем обновлении.

Решение этой версии:

1) Сначала откройте SceneBuilder

2) Теперь откройте FXML/FXML файл/файлы

+0

Хорошо, но есть ли другой способ? У меня снова возникают проблемы. Решение, которое вы предоставили, работает. Но было бы замечательно, если бы файл Fxml можно было открыть с помощью опции «open with scenebuilder». – mistletoe

+0

@mistletoe Что я имею в виду, 'SceneBuilder' нужно открыть, независимо от того, открыли ли вы файл или нет. Тогда трюк здесь. 'Вы просто заходите в Eclipse или всякий раз, когда у вас есть файл FXML, и дважды щелкните его (если и только SceneBuilder открыт, вам нужно только один экземпляр его открыть, чтобы он загрузил пользовательские библиотеки)'. Не нужно открывать его из меню «SceneBuilder»:) .... – GOXR3PLUS

+0

@mistletoe В следующей версии «SceneBuilder», которая будет исправлена, пока доступны только некоторые сложные способы, это известная проблема. – GOXR3PLUS