Run Forest run! Uruchomienie JavaFX Scriptu z poziomu Javy
W poprzednim artykule opisałem dość pobieżnie tworzenie aplikacji w JavaFX Script. Napisałem tradycyjne „Hell’o World” oraz przedstawiłem ogólne założenia pracy z tym językiem. Dziś poruszę temat uruchamiania aplikacji JavaFX Script z poziomu kodu Java.
Przypomnienie
Na początek krótkie przypomnienie. Poprzedni post zakończyłem napisaniem krótkiego skryptu, którego zadaniem było uruchomienie aplikacji JFXS z linii poleceń. Wyglądał on w następujący sposób:
Listing 1. Uruchomienie JavaFXS, skrypt
@echo off
set java=javaset opts=-Xss1024K -Xmx256M
%java% %opts% -cp lib\Filters.jar;lib\javafxrt.jar;lib\swing-layout.jar; net.java.javafx.FXShell %*
Taka konstrukcja może, a wręcz powinna zostać uproszczona. Pytanie brzmi jak?
Uruchamiamy Javę z Javy
Mało kto pamięta, że w dowolnym miejscu programu możemy wywołać metodę main()
dowolnej klasy. Oczywiście o ile daną klasę widzimy, ale to szczegół.
Szybka analiza klasy net.java.javafx.FXShell
i wniosek: jest metoda main. Zatem napiszmy:
Listing 2. Wywołanie main
w main
, nie widzę przeciwskazań
package eu.runelord.javafxjug;
import net.java.javafx.FXShell;
public class Main {
public static void main(String[] args) throws Exception {
FXShell.main(new String[] {"eu.runelord.javafxjug.Mainfx"});
}
}
Odpalamy po Eclipsem i bangla. Jednak banana na koźlim ryjku nie trwał długo…
Budowanie jara bez mavena
Każdy zna polecenie jar
. Prawda? No cóż, narzędzie do tworzenia jarów jest dość tępe i wymaga ręcznego poprawiania. O co chodzi. Jako, że nie mogę
używać Mavena, zdecydowałem się na ręczne wybudowanie jara. Jest to bardzo łatwe. Zanim jednak przystąpiłem do pracy musiałem stworzyć własny plik
manifestu. Spoko, da się:
Listing 3. Własny manifest
Manifest-Version: 1.0
Main-Class: eu.runelord.javafxjug.Main
Class-Path: lib/Filters.jar
lib/javafxrt.jar
lib/swing-layout.jar
I już mogę przystąpić do dzieła:
Listing 4. Ręczne budowanie jara
>jar -cmf MAINFEST.MF jfxs.jar build\*
Ręka w górę kto wie co jest nie tak? Odpowiedź, otóż do jara zostaną włączone wszytkie pliki z katalogu build
, ale razem z tym katalogiem. Skończyło
się na edytowaniu zawartości jara w 7zipie. Na zakończenie uruchamiam całość
Listing 5. Run Forest run!
>java -jar main.jarcompile thread: Thread[AWT-EventQueue-0,6,main]compile 1.172init: 0.844
bangla…
Wnioski
W wyniku użerania się z manifestem rozpocząłem procedurę zgłoszenia własnego projektu do sourceforge. Celem projektu będzie stworzenie zestawu plugin + archetyp dla aplikacji JavaFX Script. Jak się uda, będę pierwszym, który napisze coś takiego na potrzeby JFXS.