Run Forest run! Uruchomienie JavaFX Scriptu z poziomu Javy
W poprzednim artykule opisałem dość pobieżnie tworzenie aplikacji w JavaFX Script. Napisałem radycyjne „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 apliakcji JFXS z lini poleceń. Wyglądał on w następujący sposób:
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ą kalsę widzimy, ale to szczegół. Szybka analiza klasy net.java.javafx.FXShell i wniosek: jest metoda main. Zatem napiszmy:
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ę:
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:
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ść
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.