つぎにthisiscool.comのGCC/GCJ 4.3 (gcj-eclipse-merge-branch)をインストールしてようやくコンパイルと実行に成功した。
SWTを使ってウィンドウを表示するだけの単純なアプリなのに、コンパイルにはやたらと時間がかかるし、実行ファイルのサイズが55,842KBと巨大。upxで圧縮しても20,394KB。
JREをインストールしていない環境でも動作するプログラムをJavaで実装できることにはとても魅力を感じるけれど、この結果だと採用しにくいな。
a/Main.java
package a; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class Main { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("HelloSWT"); shell.setSize(480, 320); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }
コンパイル
gcj -fjni -c -o swt.o swt.jar gcj -mwindows -o Hello --classpath=swt.jar --main=a.Main a/Main.java swt.o
gcj.exe (GCC) 4.4.0 でも -static オプションをつけたら期待通りに動いた。
返信削除$ gcj -fjni -c -o swt.o swt.jar
$ gcj -static -mwindows -o Hello --classpath=swt.jar --main=a.Main a/Main.java swt.o