質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Eclipse

    1700questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • JavaFX

    401questions

    JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Eclipse上からFXMLファイルをSceneBuilderで開けない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 749

yukimaru02

score 1

 実現したいこと

Eclipse上からFXMLファイルを直接SceneBuilderで開き、編集したい

 前提 

  • eclipseにe(fx)clipseプラグインをインストール
  • GluonでSceneBuilderをインストール
  • eclipseにて「ウィンドウ」→「設定」→「JavaFX」を選択し、
    「SceneBuilder実行可能ファイル」にインストールしたSceneBuilder.exeまでの絶対パスを入力し、適用

 エラー発生手順

  1. インストールしたSceneBuilder.exeを起動し、こちらのサイトを参考に適当なFXMLファイルを作成し、適当な場所(※)に保存
    ※ デスクトップ上に hello.fxml という名前で保存してみました

  2. Eclipseプロジェクトの src フォルダの直下に上記で作成したFXMLファイルをインポート

  3. Eclipseにて該当のFXMLファイルを右クリックし、「SceneBuilderで開く」を選択

  4. 「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を選択

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

自分もやってみたのですが再現しません。しかし参考になるかも知れないので環境情報を書いておきます。

拝見した限りSAXParseExceptionつまりXMLの文法レベルでの不具合が検出されているように見えますが、同じファイルが操作によっては開けるとのことで少々難しい問題のように思えました。
(ただ、一応はFXMLファイルの中身を明記しておいた方がよいかも知れません)


当方の環境

OS: Windows 10 64bit
Eclipse: Oxygen.3a (4.7.3a)
pleiades(日本語環境)は入れてません。(関係薄い気がしますが)
e(fx)clipse: 3.0.0
Scene Builder for Java 9: 9.0.1 ※Windows Installerを選択

Eclipseの設定関連は
Java>InstalledJRE:
jdk10.0.1(default)
jdk1.8.0_172
JavaFX>SceneBuilder executable: 9.0.1のexeファイルのフルパス名

プロジェクトのJREはjdk10.0.1です。

環境変数は
JAVA_HOME=C:\Program Files\Java\jdk10.0.1
PATHには
C:\ProgramData\Oracle\Java\javapath
C:\Program Files\Java\jdk10.0.1\bin
が入ってます。

(PCにはjdk10.0.1, jdk1.8.0_172を入れておりjdk9.xは入ってません)

関係あるか怪しいですがeclipse.iniの中の-vmセクションにはjre1.8.0_172のパスが設定されてますのでeclipse自体は1.8で動いていると思います。


プロジェクトへのFXMLファイルの追加操作はプロジェクト作成後に、パッケージビューでsrc以下にある目的のパッケージを選び右クリックして

New>Other...>JavaFX>New FXML DocumentでNextボタン押下
次に表示される画面でNameに「myscene」などとファイル名だけ入力して「Finish」です。

パッケージディレクトリーの下にmyscene.fxmlが出来ているので右クリック
Open with SceneBuilder
で開けます。

(自分の環境は今までSceneBuilder for Java8を使っており、本件の再現のために9.0.1を別の場所へインストールしているので少々おかしな環境かも知れないです・・・)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/29 12:45

    回答ありがとうございます!
    ただ...申し訳ないのですが、とても初歩的なミスをしていたため今回のエラーが発生していたようです。

    ワークスペースに指定したディレクトリの中に日本語を使用しているものがあったため、
    その中に作成したプロジェクト内のFXMLファイルがSceneBuilder上で開けなくなっていたようです。


    環境まで用意して検証していただいたのに本当に申し訳ありません。
    ただ、KSwordOfHaste さんが回答の中でパスについて触れており、
    そこからワークスペースのディレクトリについて再考するきっかけになり、解決いたしました。
    ありがとうございました!!

    キャンセル

  • 2018/04/29 12:50 編集

    なんとそういう問題でしたか・・・何がきっかけになって原因が判明するかわからないものです。環境設定は難しいですね・・・

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Eclipse

    1700questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • JavaFX

    401questions

    JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。