(追記)この記事を公開した後、ちえさんからこんなツイートが…。
@patorash あれ・・・これこの間、intellij idea の artifact 設定でそのままできた気がします・・!あとで設定確認してみます!
— ちえ (@chiepomme) August 11, 2013
gistにコードをアップしてもらって、似たような感じに直したあと、確かにartifact設定のままでビルド通りました。また、何が違うのか試そうとコードを元に戻してから再度ビルドをかけたら、また通ってしまいました…。違いがわからないどころか、以前にビルドできなかった理由がわからなくなりました。うーん、謎い…。
もし、KotlinでJavaFxアプリの起動部分がどうしてもうまくいかない、という方のみ、以下を参考にしてみてください。
以下、原文
Kotlin+JavaFXでアプリを作ったら、使えるようにビルドしたいじゃないですか。
以前は以下のURLを参考にアプリをjarにまとめていました。
Kotlin + JavaFX 2.2の場合の実行可能jarを作成する
前はこれで動いたのですが、今の段階になって何故かおかしくなりました。
jarにはなるんだけれど、実行すると動作が変になってしまい…。
そもそもIntelliJにはartifactsを作るときにJavaFx Applicationがあるので、それを選びたいのですが、Kotlinで作ると実行用クラスが存在しないので、選べません。◯◯Packageを指定しても、ダメでした。
ふと思いついたのが、JavaFXを起動するところだけ、Javaで書いてしまう(!!)という方法です。
これを試したところ、artifactsでJavaFX Applicationを選択することができました!かつ、jarではなく、dmgなどの形式にすることができたので、こちらのほうが汎用性がよさそうです。
まぁJavaFXの起動部分もKotlinで書いた状態でJavaFX Applicationが選択できるようにIntelliJが進化してくれるまではこれで凌ぐほうがよいかなーと思います。