つぎに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