実現したいこと
Eclipse上からFXMLファイルを直接SceneBuilderで開き、編集したい
前提
- eclipseにe(fx)clipseプラグインをインストール
- GluonでSceneBuilderをインストール
- eclipseにて「ウィンドウ」→「設定」→「JavaFX」を選択し、
「SceneBuilder実行可能ファイル」にインストールしたSceneBuilder.exeまでの絶対パスを入力し、適用
エラー発生手順
- インストールしたSceneBuilder.exeを起動し、こちらのサイトを参考に適当なFXMLファイルを作成し、適当な場所(※)に保存
※ デスクトップ上に hello.fxml という名前で保存してみました
0. Eclipseプロジェクトの src フォルダの直下に上記で作成したFXMLファイルをインポート
- Eclipseにて該当のFXMLファイルを右クリックし、「SceneBuilderで開く」を選択
- 「Could not open ~」ポップアップが表示されてしまう
発生している問題・エラーメッセージ
ポップアップには
Could not open " Open operation has failed. Make sure that the chosen file is a valid FXML_document
と表示されており、さらに「Show Details...」を選択すると以下のように記載されておりました
java.io.IOException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; プロローグにはコンテンツを指定できません。 at com.oracle.javafx.scenebuilder.kit.fxom.glue.GlueLoader.load(GlueLoader.java:93) at com.oracle.javafx.scenebuilder.kit.fxom.glue.GlueLoader.load(GlueLoader.java:76) at com.oracle.javafx.scenebuilder.kit.fxom.glue.GlueDocument.<init>(GlueDocument.java:54) at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:79) at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:102) at com.oracle.javafx.scenebuilder.kit.editor.EditorController.updateFxomDocument(EditorController.java:2540) at com.oracle.javafx.scenebuilder.kit.editor.EditorController.setFxmlTextAndLocation(EditorController.java:761) at com.oracle.javafx.scenebuilder.app.DocumentWindowController.loadFromFile(DocumentWindowController.java:386) at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.performOpenFiles(SceneBuilderApp.java:658) at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.access$100(SceneBuilderApp.java:97) at com.oracle.javafx.scenebuilder.app.SceneBuilderApp$1.invalidated(SceneBuilderApp.java:510) at javafx.base/com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(ExpressionHelper.java:136) at javafx.base/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:80) at javafx.base/javafx.beans.property.ReadOnlyBooleanPropertyBase.fireValueChangedEvent(ReadOnlyBooleanPropertyBase.java:72) at javafx.base/javafx.beans.property.ReadOnlyBooleanWrapper.fireValueChangedEvent(ReadOnlyBooleanWrapper.java:103) at javafx.base/javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:111) at javafx.base/javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:145) at com.oracle.javafx.scenebuilder.kit.library.user.UserLibrary.lambda$updateFirstExplorationCompleted$6(UserLibrary.java:352) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418) at java.base/java.security.AccessController.doPrivileged(Native Method) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175) at java.base/java.lang.Thread.run(Thread.java:844) Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; プロローグにはコンテンツを指定できません。 at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204) at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:178) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:399) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:326) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1471) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:962) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:601) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:531) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:885) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:821) at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) at com.oracle.javafx.scenebuilder.kit.fxom.glue.GlueLoader.load(GlueLoader.java:91) ... 24 more
備考、試したこと
- **該当のFXMLファイルをsrcフォルダ直下にて、直接 「プログラムから開く」→「SceneBuilder」を選択した場合も同じエラーが発生しますが、
FXMLファイルをデスクトップ上にコピーして同様に「プログラムから開く」を選択した場合は問題なくSceneBuilderが起動しました**
- 該当のFXMLを含んだアプリ自体は問題なくeclipseで実行できます
- eclipse上での設定で「SceneBuilder実行可能ファイル」をわざと違うパスにした場合はエラーメッセージが異なりましたので、こちらの設定自体は問題なさそうです
- 該当のFXMLファイルとは別に、eclipseにてJavaFXプロジェクトを作成した場合(※1)にデフォルトで作成されるFXMLファイルにて同様に、右クリック→「SceneBuilderで開く」を選択した場合も同じエラーが発生します
※1 「ファイル」→「新規」→「その他」→「JavaFX」→「JavaFXプロジェクト」→プロジェクト名を入力して「次へ」→「次へ」→ 「宣言的UI」の「言語」にて「FXML」を選択して完了
補足情報(FW/ツールのバージョンなど)
eclipseのバージョン:Oxygen.3a (4.7.3a)
e(fx)clipseのバージョン:3.0.0
Scene Builder for Java 9 のバージョン :9.0.1 ※PlatformはWindows Installerを選択
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/29 03:45
2018/04/29 03:51 編集