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()) }
スポンサーリンク