軽い気持ちで取りかかったら見事にハマりました。
なかなか解決しなかったのは、launchメソッドの2番目の引数とFXMLファイルのパスの書き方です。
いわゆるヌルポ(NullPointerException)から脱するため、Thread.currentThread().getStackTrace()を走らせたり色々調べても解決の糸口を見出せず。
結局、引数はsys.argv、パスはプロジェクトディレクトリ直下の絶対パスでした。JavaではMainファイルからの相対パスになります(スラッシュなしのファイル名のみ)。スラッシュの有り無しは全く意識してませんでした。
EclipseからPyCharmに検討環境を移す寸前でStackOverFlowの英語版にヒントを見つけました。またしても海外のギークに助けられました。
GUI内のカタカナなど2バイト文字が明らかに中華系フォントなので、別途フォント指定が必要ですね。
from javafx.application import Application
from javafx.fxml import FXMLLoader
from javafx.scene import Scene
import sys
class JythonJavafx(Application):
def start(self, stage):
root = FXMLLoader.load(self.getClass().getResource('/test.fxml'))
stage.setScene(Scene(root, 300, 125))
stage.setTitle("CHARACTER CODE CONVERTOR")
stage.show()
if __name__ == "__main__":
Application.launch(JythonJavafx().__class__, sys.argv)
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="125.0" prefWidth="300.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<center>
<Label text="FXML ロード成功" BorderPane.alignment="CENTER" />
</center>
</BorderPane>