Go言語でJavaFXのクラスファイルを実行するランチャーを作った
たいしたプログラムじゃないけど、JavaFXのクラスファイルをコマンドプロンプトでjava xxx.classと打って実行するのもしんどいので(いろいろオプション付けて長ったらしくなるし)、せっかくのGUIアプリなのでダブルクリックでさくっと起動できるようにGo言語でランチャー作りました。
※jarファイルにまとめるとダブルクリック実行できるのですが、Linuxだとプロパティ設定したりスマートじゃないなと。
ランチャーの仕様は、
- ランチャーのファイル名をClassファイルと同名にすることで実行クラスを指定できること。
- そのランチャーはショートカットをどこにでも設置できること。
- 自分のパソコンで起動さえすればOK
- うまく動作しないときはコマンドライン実行でエラーが確認できること。
以上を踏まえて作ったプログラムがこちら。go runでは動きません。go buildしてから実行ファルを動かしてください。実行ファイルをJavaのメインクラスのファイルと同じフォルダに置いて、且つファイル名をメインクラスと同じファイル名(拡張子なし)にしてダブルクリックするとランチャーとして機能します。
package main
import (
"fmt"
"os/exec"
"os"
"path/filepath"
"bytes"
)
func main() {
fullpath, _ := os.Executable()
path := filepath.Dir(fullpath)
fname := filepath.Base(fullpath)
cmd := exec.Command("java", "--module-path", "/home/c340/lib/openjfx-11.0.2_linux-x64_bin-sdk/javafx-sdk-11.0.2/lib",
"--add-modules=javafx.controls,javafx.fxml", fname)
cmd.Dir = path //これ大事
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err := cmd.Run()
if err != nil {
fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
return
}
fmt.Println("Result: " + out.String())
}
スポンサーリンク