JavaFX työkalujen asennus

#

Asennusurakka

#
#

Please to interact with this component

{"ra": "asennusurakka", "rd": "113992"}

Tässä dokumentissa ohjeistetaan JavaFX, e(FX)clipsen ja SceneBuilderin asennus.

Ennen kuin menet eteenpäin, niin onhan:

Asennusvideot:

1. JavaFX

JavaFX on yksi Javaan tarjolla olevia kirjastoja tehdä graafisia käyttöliittymiä. Muita ovat mm. AWT, Swing ja SWT. Kurssilla käytetään nykyisin JavaFX:ää, koska se muistuttaa eniten mm. Windows-puolen WPF-kirjastoa (mutta valitettavasti huonommin työkaluin).

1.1 JavaFX hakeminen

OpenJDK:n mukana ei tule enää versiosta 11 alkaen enää automaattisesti JavaFX:ää, jota tarvitaan käyttöliittymien tekemiseen. Tätä aiheutuu meillä jonkin verran turhaa vaivaa.

  • Windows:

    1. Hae JavaFX Windows SDK kohdasta jossa on Java FX 13.

    2. Pura .zip paketti esim: c:\devel\javafx hakemistoon niin, että bin näkyy tämän hakemiston alla, eli ennen purkamista siirry hakemistoon, jossa näkyy bin, lib yms ja valitse ne kaikki ja sitten pura. Eli kansiorakenne olisi:

       c:\
         devel\
            javafx\
               bin\
               legal\
               lib\
                   javafx-swt.jar
                   ...

    Mutta älä vaan pura .jar tiedostoja edelleen pienemmiksi!

  • Mac: 1. Hae JavaFX Mac OS X SDK kohdasta jossa on Java FX 13.

    1. Tuplaklikkaa haettua tiedostoa.

    2. Purkaantuu nimelle javafx...

    3. Nimeä uudelleen javafx

    4. Siirrä tai kopioi kansioksi

       /Users//devel/javafx
  • Linux:

    1. Hae JavaFX Linux SDK kohdasta jossa on Java FX 13.
    2. unzip openjfx-13.0.1_linux-x64_bin-sdk.zip
    3. mv javafx-sdk-13.0.1 /home//devel/javafx

Miksei käytetä ohjelmointiympäristönä esim. netbeanssia jossa olisi suoraan javaFX mukana? Tai onko kurssilla mahdollista käyttää netbeanssia eclipsen sijaan?
VL: Resurssit… olisi valtava työ kirjoittaa kaikki ohjeistus uudelleen ja kun erot ovat kuitenkin pieniä. Lisäksi myös comtestin plugin pitäisi tehdä erikseen ja ylläpitää Netbeansille. Sitten joku toinen haluaa että käytettäisiin jotakin kolmatta hänelle mielesitä työkalua.

Jos NetBeansillä tms tekee, on comtest ajot ajettava käsin komentoriviltä tai tehtävä sille NetBeansiiin ajokomento. Tämän sa tehdä ja kirjoittaa ohjeet TIMiin jos haluaa. Nyt on koko joululoma mennyt pelkkien Git-ohjeiden kirjoittamisessa…

06 Jan 20 (edited 06 Jan 20)

1.2 Eclipseen JRE jossa JavaFX mukana

#

Tee Eclipsessä oma käyttäjän JavaFX-kirjasto:

  1. Avaa Eclipse

  2. Window/Preferences/Java/Installed JRE's

    • Macissä asetukset (preferences) tulee löytyä aina ohjelman nimen mukaisesta valikosta, jos ohjelma on tehty speksien mukaan. Eli tässä tapauksessa se pitäisi löytyä Eclipse-valikosta. Asetukset pitäisi myös aina saada esille Cmd-, pikavalinnalla.
  3. Mene jdk-13.0.1 kohdalle

  4. Paina Duplicate...

  5. JRE name: jdk-13-JavaFX

  6. Default VM arguments: (huomaa että vaihdat tarvittaessa hakemistojen nimiä omaa konetta vastaavaksi)

    • Windows (ota Windowsiin tämä, videossa otin väärän):

      --module-path c:\devel\javafx\lib --add-modules javafx.controls,javafx.fxml,javafx.media,javafx.web,javafx.swing
    • Mac:

      --module-path /Users/vesal/devel/javafx/lib --add-modules javafx.controls,javafx.fxml,javafx.media,javafx.web,javafx.swing
    • Linux:

      --module-path /home/vesal/devel/javafx/lib --add-modules javafx.controls,javafx.fxml,javafx.media,javafx.web,javafx.swing
  7. Paina Add External JARs...

  8. Lisää kaikki .jar-tiedostot hakemistosta (mutta EI MITÄÄN muuta):

    • Windows: c:\devel\javafx\lib
    • Mac: /Users//devel/javafx/lib
    • Linux: /home//devel/javafx/lib
  9. Valitse sitten kaikki JavaFX:än takia lisätyt .jar-tiedostot, klikkaa Javadoc location: ja lisää sinne osoite:

     https://openjfx.io/javadoc/13/
  10. Finnish

  11. Ruksi juuri tekemäsi uusi JRE aktiiviseksi.

  12. Apply and Close

Jos purat javafx:n johonkin muuhun hakemistoon kuin esimerkissä, pitää kohdassa 5 laittaa module-path oman hakemiston mukaiseksi!

07 Jan 19 (edited 07 Jan 19)

Omaa JRE:tä tehdessä katsokaa, että siellä valmiiksi oleva ..\javanpolku\lib\jrt-fs.jar ei häviä minnekään. Koodi lakkaa siis toimimasta ilman tuota

-pyjuella

15 Jan 20 (edited 15 Jan 20)

HUOM! Muista aina jatkossa projektia tehdessä tarkistaa, että JRE-kohdassa on tämä JDK!

1.3 Mistä tiedän että toimii?

  1. Luo uusi Eclipsen Java projekti:

    1. File/New/Java Project
    2. Project name: hellofx
    3. Ruksi (videossa en ruksinut tätä) ja katso huolella että kohdassa Use default JRE lukee suluissa edellä luomasi: jdk-13-JavaFX. Jos ei lue, niin valitse Use project specific JRE: ja etsi se siihen.
    4. Jos kysyy module-infon luomista, niin kiellä!
    5. Finnish
  2. Tee uusi Eclipse Java-luokka:

    1. Klikkaa uusi projektisi aktiiviseksi.
    2. File/New/Class
    3. Package: fxHello
    4. Name: HelloWorld
    5. Finish
  3. Katso että HelloWorld.javan paketti fxHello on src hakemiston alla.

  4. Eihän vaan ole tiedostoa module-info.java? Jos on, poista se.

  5. Kopioi tiedoston HelloWorld sisällöksi:

    package fxHello;
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.layout.BorderPane;
    import javafx.stage.Stage;
    
    /**
     * Yksinkertainen esimerkki JavaFX ohjelmasta
     * @author vesal
     * @version 4.3.2016
     */
    public class HelloWorld extends Application {
        @Override
        public void start(Stage primaryStage) {
            BorderPane root = new BorderPane();
            Label label = new Label("Moi!");
            root.setCenter(label);
            Scene scene = new Scene(root);
            primaryStage.setScene(scene);
            primaryStage.show();
        }
    
    
        /** @param args  ei käytössä  */
        public static void main(String[] args) {
            launch(args);
        }
    }
  6. Mitään ei saa olla punaisella tai keltaisella!

  7. Run/Run

  8. Pitäisi aueta pieni ikkuna, jossa lukee Moi! Jos haluat isomman ikkunan pidennä Label-komponentin sanaa.

Yritin ajaa 1.3 kohdan HelloWorldin, mutta antaa seuraavanlaisen errorin: “Error occured during initialization of boot layer java.lang.module.FindException: Module javafx.web not found” Mistä mahtaa johtua?

VL: eihän sulla vaan Modulepathissa ole jotakin muutakin kuin se JDK?

Joo juuri, kun kerkesin kirjoittamaan tänne niin huomasin, että Modulepathissa oli pikku virhe. Nyt toimii!

05 Jan 19 (edited 06 Jan 19)

Minulla sama ongelma kuin edellä: Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.web not found. Package Explorerissa: hellofx packagen alla on JRE System Library [jdk-11-JavaFX] ja sen alla src -> fxHello -> HelloWorld.java. Kun valitsen hellofx packagen ja menen Project -> Properties -> Java Build Path -> Libraries, niin sielläkin näkyy modulepathin alla pelkästään tuo JRE System Library [jdk-11-JavaFX]. Kaikki kohdat ennen tätä toimii oikein :(

VL: eihän sulla vaan mitään ole punaisella? Onhan WM-arguments edellä varmasti oikein? Eihän vaan ole module-info.java-tiedosto. Jos on, poista.

Piti vaihtaa ylhäältä otettuun –module-path… oikea kansio oman koneen asennuksen mukaan, niin rupesi toimimaan.

06 Jan 19 (edited 06 Jan 19)

Sama ongelma minullakin ja vielä kahdella koneella (pöytäkone ja läppäri):

Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.web not found

“Jos ei toimi, niin katso että asetukset (eli hiiren oikealla projekin nimen päällä ja Properties) ovat seuraavasti:”

Tuon mukaan kun katsoin näyttää muuten samalta paitsi ei ole tuota “Modulepath” tai “Classpath” osiota. Mutta tosiaan tuo JRE System… löytyy.

VL: Nyt on jotakin aikaisemmin jo huonosti jos ei näy niitä kahta siinä. Olethan lukenut: JavaFX-virheet

04 Jan 20 (edited 04 Jan 20)

Minulla sama ongelma, että “Jos ei toimi, niin katso että asetukset (eli hiiren oikealla projekin nimen päällä ja Properties) ovat seuraavasti:” kohdan mukaiset Modulepath ja Classpath puuttuvat. Olen nyt käynyt huolellisesti läpi JavaFX asennuksen sekä JavaFX virheet, mutta en löytänyt ratkaisua ongelmaan. Minulla on myös Eclipseen kopioidussa koodissa punaisata @Overide kohdalla, jossa Eclipse herjaa syntaksivirhettä: “Syntax error, annotations are only available if source level is 1.5 or greater”



VL: katso väärä java

07 Jan 20 (edited 07 Jan 20)

Jos ei toimi, niin katso että asetukset (eli hiiren oikealla projekin nimen päällä ja Properties) ovat seuraavasti:

Nyt saat ruksia asennetuksi kohdan: JavaFX.

#

2. e(fx)clipse

Eclipsen e(fx)clipse-laajennus tuo Eclipseen työkaluja JavaFX-ohjelmien kirjoittamiseen.

Huom. Nämä ohjeet Eclipsen versiolle 2019-12 tai uudemmalle.

Asenna Eclipsen e(fx)clipse (3.6.0) päivitys tukemaan Java 11

  1. Avaa Eclipse (Mikroluokissa voit käynnistää myös komentoriviltä komennolla: ee1912.)
  2. Valitse menusta Help/Eclipse Marketplace:
    1. Etsi e(fx)clipse
    2. Valitse e(fx)clipse 3.6.0
    3. Install
    4. Lopuksi muista odottaa tarpeeksi kauan (seuraa alareunasta asennuksen edistymistä), että ehtii asentua. Ensin haetaan asennuspaketti ja sitten ruvetaan asentamaan ja sen edityminen näkyy oikeassa alanurkassa ja se kestää… Lopuksi pitää odottaa Eclipsen kysymysikkuna, että sen saa käynnistää uudelleen.
  3. Painele OK/Next ja hyväksy tarvittavat lisenssiehdot.

Varmistu siitä, että edelliset vaiheet ovat kunnossa. Muuten Eclipse voi kaatua, eikä enää käynnisty.

2.1 Mistä tiedän että toimii

  1. Ota Eclipsessä File/New/Other/
  2. Jos löytyy kohta JavaFX ja sen alta JavaFX Project

Nyt saat ruksia asennetuksi kohdan: e(fx)clipse.

Jee, asennetaan seuraavaksi SceneBuilder…

Ensin en saanut JavaFX-kohtaa näkymään e(fx)clipsen asennuksen jälkeen. Ilmeisesti edellisen ohjeen kohdan 4. jälkeen täytyy odottaa, että Eclipse kysyy pop-up-ikkunassa uudelleenkäynnistystä IDE:n muutosten vuoksi, mikä täytyy hyväksyä (manuaalinen restart ei toiminut ennen viestiä). Tämän kysymyksen ilmestymisessä kesti jonkin aikaa enkä sitä ensimmäisellä kerralla ymmärtänyt odottaa. Ongelma ratkesi kun uudelleenkäynnistin Eclipsen ja toistin e(fx)clipsen asennuksen, ja huomasin tuon pop-up-ikkunan.

08 Jan 19

3. SceneBuilder

SceneBuilder on työkalu tuottaa JavaFX:ässä käytettyä ulkoasun esittämismuotoa, eli .fxml-tiedostoja. Näitä tiedostoja voidaan aivan hyvin tehdä millä tahansa tekstieditorilla, ja siis myös Eclipsellä. Ja usein tekstimuotoista muokkaamista käytetäänkin, koska se on nopeampaa kuin hiirellä klikkailu. Mutta kunnes kielen pääsee sisälle, voi olla helpointa ainakin aloittaa uudet käyttöliittymät tuottamalla ensimmäiset .fxml-tiedosto graafisella työkalulla. Ja SceneBuilder on yksi tähän välttävästi sopiva työkalu (välttävästi tarkoittaa tässä ettei se alkuunkaan vedä vertoja Microsoftin Visual Studion tai Blendin tasoisille työkaluille).

Seuraavassa on ohjeet SceneBuilderin asentamiseen.

Jos sinulla on omassa koneessasi vanha SceneBuilder, niin tee sille uninstall ja poista kaikki siihen liittyvät tiedostot aluksi.

Agoran mikroluokissa SceneBuilder on valmiiksi asennettuna
C:\devel\SceneBuilder\SceneBuilder.exe,
joten voit siirtyä suoraan kohtaan 2 tarkistamaan asetuksia.

  1. Valitse Gluonin SceneBuilder-lataussivulla oikea käyttöjärjestelmä, lataa asennustiedostot (tässä pitää ottaa Java 11 kun ei ole uudempia!) ja asenna SceneBuilder.

    • Windows: Voit asentaa muuhunkin kuin oletushakemistoon, esimerkiksi:
      C:\devel\SceneBuilder

    • OS X: Pudota normaalisti Ohjelmat/Applications -kansioon.

    • Debian-pohjaisissa Linuxeissa (esim. Ubuntu) paras tapa asentaa on avata ladattu tiedosto Software Center:lla. Vaihtoehtoisesti alla olevat komennot voi syöttää terminaaliin.

      sudo apt install scenebuilder-11.0.0.deb
    • Fedora/CentOS (esim. Red Hat Enterprise Linux) käyttää sudo rpm -i dpkg:n sijaan tai vaihtoehtoisesti voi extractata SceneBuilderin .rpm-tiedostosta toimimaan standalonena

      sudo dpkg -i scenebuilder-9.0.1.deb
      sudo apt-get -f install
  2. Asennuksen jälkeen avaa Eclipse ja hyväksy kysymys Workspacen käytöstä.

  3. Siirry Eclipsen valikkoriviltä asetuksiin ja siellä JavaFX-kohtaan:

    • Windows: Window/Preferences/JavaFX
    • OS X: Eclipse/Asetukset/JavaFX
    • Linux: Window/Preferences/JavaFX
  4. Kirjoita SceneBuilder executable -kenttään SceneBuilder asennuksen sijainti:

    • Windows:
      • C:\Users\OMATUNNUS\AppData\Local\SceneBuilder\SceneBuilder.exe
      • tai C:\devel\SceneBuilder\SceneBuilder.exe jos teit asennuksen sinne.
      • Huomaa että nimi pitää nimenomaan olla SceneBuilder.exe, eli se asennettu versio, ei se sivuilta ladattu asennuspaketti.
    • OS X: /Applications/SceneBuilder.app
    • Linux: /opt/SceneBuilder/SceneBuilder

Miksi tästä on poistettu ohje SceneBuilderin sijainnin lisäämisestä Eclipseen?

VL: en tiedä, oisko ollut niin että kokeiluissa se löytyi automaattisesti. No tuo oli kommenteissa, eli palautin sen.

08 Jan 20 (edited 08 Jan 20)

Laitoin uuden koneen kasaan ja asensin siihen 18.04 LTS Ubuntun niin sen kernel versiolla 5.3.0-28-generic SceneBuilder ei toiminut ollenkaan kaatui alle minuutin, eli jos joku sattuu törmäämään samaan ongelmaan niin itselleni auttoi että boottaa tuolla 5.3.0-26-generic kernelillä. Siinäkin lagailee jonkun verran, mutta ei ole vielä kaatunut ja pystyy tekemään tehtävät.

30 Jan 20

3.1 Mistä tiedän että toimii?

Jos et vielä ole asentanut kurssin Jar-paketteja Ali.jar, FXGui.jar, niin tee se viimeistään nyt.

Sitten tee SceneBuilder käyttö -harjoitusta ainakin siihen asti että SceneBuilder aukeaa.

Nyt saat ruksia asennetuksi kohdan: SceneBuilder.

Jee! Jos tulit tänne Eclipsen asennusvaiheesta, niin voit mennä takaisin jatkamaan asetusten säätöä.

Nice to know: Jos ihmettelit, miksei SceneBuilderia ladattu Oraclen sivuilta, niin Oracle jakelee nykyisin vain SceneBuilderin lähdekoodia, ja Gluon on hyvä lähde valmiiksi käännetylle versiolle.

4. Käyttö

Näitä ei tarvitse asennusvaiheessa stressata, mutta perusohjeita SceneBuilderin käytöstä löytyy sitten SceneBuilderin käyttö-sivulta.

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.