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.