JavaFX Scene Builder 8.5.0

https://gluonhq.com/products/scene-builder/

のExcutable Jarを日本語のプラットフォームで実行すると文字化けする。Java 8 版のversion 8.5.0は本投稿時点で2018年6月に更新されて以降更新されていない。今後更新されることはないと思われるのでこれを自前で直した手順のメモ。

そのまま実行するとわかるようにこんな感じで正しく日本語が表示されている部分と文字化けしている部分が混在している。Executable jarはJavaランタイムをインストールしていて関連付けが行われていればダブルクリックで実行できる。

scenebuilder-8.5.0-all.jar

実行しているscenebuilder-8.5.0-all.jarのハッシュ値はSHA256SUM: a812a7e842d870362ca5877b2c200e8dbd914a32723144a34becf3926d1a6f66となっている。動かしているJavaランタイムはJava 1.8.0_251-b08だ。

原因は次のjarとgrepで表示できる2つのファイルにあるようだ。

jar tf scenebuilder-8.5.0-all.jar | grep _ja.properties
>> com/oracle/javafx/scenebuilder/app/i18n/SceneBuilderApp_ja.properties
>> com/oracle/javafx/scenebuilder/kit/i18n/SceneBuilderKit_ja.properties

実行画面から予想がつくように、2つある日本語訳に関するファイルのうち片方は正常で片方に文字化けする原因がある。中身を見るとわかるのだがappのほうにはnative2asciiが施されているがkitの方はUTF-8のファイルそのままになっている。内容そのものは同一のようである。

よって、Excutable Jar内のSceneBuilderKit_ja.propertiesをSceneBuilderApp_ja.propertiesの内容で上書きしてやれば文字化けは解決する。jarはzipなので方法は別に何でも良いがjarコマンドが使えるなら以下。

jar xf scenebuilder-8.5.0-all.jar com/oracle/javafx/scenebuilder/app/i18n/SceneBuilderApp_ja.properties
jar xf scenebuilder-8.5.0-all.jar com/oracle/javafx/scenebuilder/kit/i18n/SceneBuilderKit_ja.properties
cp com/oracle/javafx/scenebuilder/app/i18n/SceneBuilderApp_ja.properties com/oracle/javafx/scenebuilder/kit/i18n/SceneBuilderKit_ja.properties
jar uf scenebuilder-8.5.0-all.jar com/oracle/javafx/scenebuilder/kit/i18n/SceneBuilderKit_ja.properties

2つのファイルをアーカイブから抽出し、「kit」を「app」で上書きしてからアーカイブ内のファイルを上書きしている。後始末として、できたcom/oracle/javafxフォルダは削除してよい。更新後のJarはSHA256SUM:96b00666a97031783163d041e02dc272a27a9b24722ff17c8f7d5c0807a87a0bとなった。

実行すると次のように文字化けは直る。

scenebuilder-8.5.0-all.jar

「ライブラリ・アイテムをここにドラッグ...」や「選択なし」の日本語化が効いていないように見えるが他の文字化け箇所はちゃんと日本語の方のテキストが表示されている。文字化けと日本語訳漏れなら後者が圧倒的にマシだ。文字化けは使用に耐えないが英語は使用に耐える。

だいたいこういうJavaFxいじろうという人は使用するツールのUIが日本語か英語かなんて気にしていないだろう。必要にして十分な対処法におもう。

どうしても全部英語がよいときは

java -Duser.language=en -jar scenebuilder-8.5.0-all.jar

で全部の箇所で英語のテキストを表示できるがダブルクリックで実行できないのが面倒なので無しかと。