Saturday, January 19, 2008

SWT w Ubuntu

Ostatnie kilka dni spędziłem na walczeniu z SWT w ubuntu. SWT to technologia dostępna w języku programowania Java pozwalajaca tworzyć interfejsy użytkownika wyglądające jak natywne okienka dostępne w systemie z którego korzystamy.

Na początku wpisałem sobie w synapticu SWT i zainstalowałem co następuje:

libswt3.2-gtk-gcj

libswt3.2-gtk-java

libswt3.2-gtk-jni

Paczka gtk-java zawiera pliki jar, zaś paczka jni pliki so. Później przyszedł czas na eclipse. Wiem, że na dzień dzisiejszy dostępna jest wersja 3.3, ale prawdopodobnie na moim poziomie zaawansowania nie zauważyłbym nawet różnicy w funkcjonalności :] więc zainastalowałem sobie:

eclipse

eclipse-jdt

eclipse-pde

eclipse-platform

eclipse-rcp

eclipse-source

Nie wiem czy to wszystko jest potrzebne, ale :) z tym wszystko działa w porządku. Oczywiście o:
sun-java6-jdk
nie wspomnę. Po zainstalowaniu tych wszystkich paczek mamy dwie opcje. Zrobić dowiązanie symboliczne w katalogu rozszerzeń jre do swt.jar tak, że będzie automatycznie lądowało w projekcie (wyglądał poprostu ładnie), albo dodawać do projektów w których korzystamy SWT za każdym razem zewnętrzne pliki JAR (pojawia się kolejna pozycja w menu). Jeżeli chcemy zrobić dowiązanie to w katalogu:
sudo ln -s /usr/lib/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.2.2.v3236.jar /usr/lib/jvm/java-6-sun/jre/lib/ext/swt.jar

Teraz uruchamiamy Eclipse wchodzimy do: Window\Preferences\Java\Installed JREs, zaznaczamy java-6-sun, wybieramy Edit..., Add External JARs..., wyszukujemy dowiązanie symboliczne /usr/lib/jvm/java-6-sun/jre/lib/ext/swt.jar, OK, OK, OK. Teraz pozostaje nam jeszcze ponowne uruchomienie Eclipse. Od tej pory wszystkie projekty jakie będziemy tworzyć będą posiadały możliwość używania SWT. 

Jeżeli chcemy samodzielnie dołączać SWT do projektu podczas tworzenia nowego projektu w widoku Java Settings w zakładce Libraries możemy wybrać Add External JARs i analogicznie do poprzedniego opisu dodać ją samodzielnie. Podaję kod przykładowej aplikacji:

package widok;

import org.eclipse.swt.widgets.*;

public class Okienko {
   public static void main(String [] args) {
     Display display = new Display();
     Shell shell = new Shell(display);
     shell.setText("Hello World !");
     shell.open();
     while (! shell.isDisposed()) {
          if(! display.readAndDispatch())
               display.sleep();
     }
     display.dispose();
   }
}
Podczas uruchamiania z menu Run\Run As musimy wybrać SWT Application.

Aby stworzyć plik jar z menu File wybieramy export Java \ Jar File, zaznaczamy nasz projekt i klikamy kolejno Next aby w widoku JAR Manifest Specification ustawić MainClass na widok.Okienko. Powiedzmy, że zapiszemy plik pod nazwą morficzneOkienko.jar

Ponieważ java nie wie gdzie dokładnie ma szukać sobie informacji o swt dlatego aplikację musimy uruchomić:

java -Djava.library.path=/usr/lib/jni -jar morficzneOkienko.jar

wskazując javie, gdzie znajdują się biblioteki potrzebne do uruchomienia naszego programu.

Aby móc cieszyć się SWT w NetBeans 6 klikamy w prawym panelu "Projects", klikamy prawym przyciskiem myszy na nasz projekt i wybieramy Properties. W części Categories wybieramy Libraries i w zakładce Compile:

/usr/lib/eclipse/plugins
Wybierzmy teraz Run i do pola VM Options wpiszmy:

-Djava.library.path=/usr/lib/jni

i już możemy cieszyć się SWT w NetBeans 6

1 comment:

Jacek Pospychala said...

super że Ci się udało,

jedyne do czego można się przyczepić to Eclipse 3.2 ma już rok, więc jest stare, a 3.3 ma dużo ułatwień również dla nowych użytkowników.

no i w SWT 3.3 nie potrzeba już podawać java.library.path

dobrej zabawy z swt :)