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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaFX

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

Eclipse

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

Q&A

解決済

1回答

3170閲覧

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

yukimaru02

総合スコア7

JavaFX

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

Eclipse

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

0グッド

0クリップ

投稿2018/04/28 06:34

編集2018/04/28 09:38

実現したいこと

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

前提

  • eclipseにe(fx)clipseプラグインをインストール
  • GluonでSceneBuilderをインストール
  • eclipseにて「ウィンドウ」→「設定」→「JavaFX」を選択し、

「SceneBuilder実行可能ファイル」にインストールしたSceneBuilder.exeまでの絶対パスを入力し、適用

エラー発生手順

  1. インストールしたSceneBuilder.exeを起動し、こちらのサイトを参考に適当なFXMLファイルを作成し、適当な場所(※)に保存

※ デスクトップ上に hello.fxml という名前で保存してみました
0. Eclipseプロジェクトの src フォルダの直下に上記で作成したFXMLファイルをインポート

  1. Eclipseにて該当のFXMLファイルを右クリックし、「SceneBuilderで開く」を選択
  2. 「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を選択

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

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/28 16:04

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukimaru02

2018/04/29 03:45

回答ありがとうございます! ただ...申し訳ないのですが、とても初歩的なミスをしていたため今回のエラーが発生していたようです。 ワークスペースに指定したディレクトリの中に日本語を使用しているものがあったため、 その中に作成したプロジェクト内のFXMLファイルがSceneBuilder上で開けなくなっていたようです。 環境まで用意して検証していただいたのに本当に申し訳ありません。 ただ、KSwordOfHaste さんが回答の中でパスについて触れており、 そこからワークスペースのディレクトリについて再考するきっかけになり、解決いたしました。 ありがとうございました!!
KSwordOfHaste

2018/04/29 03:51 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問