IntelliJ IDEA

IntelliJ Idea on yksi vaihtoehto Eclipselle.

# asennusedistyy20

Ohjeet ovat vielä keskeneräiset. Täydennä niitä sitä mukaan kun käytät.

Alla ohjeet videona, mutta seuraa kuitenkin samalla itse tekstiä. Jos tekstissä on virheitä, ne korjataan ja videoon virhe voi jäädä, eli usko tekstiä.

1. Erot Eclipseen

Ihan aluksi on huomattava pieni terminologiaero Eclipsen ja IntelliJ IDEAn välillä. Isoimpana tuo Projektin merkitys:

Eclipse IntelliJ IDEA
Workspace Project
Project Module
Facet Facet
Library Library
JDK SDK
Classpath variable Path variable

IDEA:ssa ei myöskään ole perspektiivejä Eclipsen tapaan. Perspektiivit on pyritty korvaamaan automaattisesti vaihtuvilla näkymillä. Tästä on omat hyvät ja huonot puolensa.

Lue tarkemmin eroista JetBrainsin sivuilta.

JRE = Java Run-time Environment, JDK = Java Development Kit, SDK = Software Development Kit

27 Jan 23 (edited 07 Jan 24)

2. JetBrains-opiskelijalisenssi

TODO: Tähän miten hankitaan.

3. Asentaminen

  • jos sinulla ei ole JetBrainsin opiskelijatunnuksia, hanki ne (ks. edellä), niin voit rekisteröidä Ultimaten ilmaiseksi käyttöösi.
  • olethan asentanut ensin JDK:n?
  • mene sivulle Asennusohjeet
    • Rullaa kohtaan Install using the Toolbox App
    • lataa oikean käyttöjärjestelmän asennustyökalu
    • käynnistä se
    • valitse IntelliJ IDEA Ultimate
      • Community-versiokin kelpaa, mutta opiskelijana saa myös Ultimaten ilmaiseksi
      • älä ota EDU-versiota!
  • itse asensin Windowsissa C:\devel\intelij -hakemistoon

3.1 Luodaan kurssin projekti

Projekti Ideassa on suurinpiirtein sama kuin Workspace Eclipsessä. Sovella seuraavassa Linuxin ja Macin tapauksessa hakemistoja "luovasti":

  • Klikkaa Projects ja New Project
  • Name: ohj2
  • Location: c:\kurssit (Mac ja Linux: ~/kurssit)
  • Tarkista että JDK:na on se uusin 22 mikä tehtiin JavaFX-ohjeissa.
  • Ruksi pois kohdasta Add sample code
  • Create
  • Voit vasemmasta reunasta syödä src-hakemiston pois.

Tähän samaan projektiin voi moduuleina tehdä sitten harjoitustyötä, demoja jne. Esimerkiksi demot on minulla modulissa demot ja sen paketteina on src-hakemiston alla tyyliin

# mallirakenne
c:\kurssit    mac/Linux:  ~/kurssit
  ohj2
    .idea
       ...
    ohj2.iml
    out
       ...                  - kääntyneet tiedostot
    ht                      - tänne harjoitustyö (ht projekti=moduli)
      .git                  - hakemisto joka tuli versionhallinnan myötä
      ht.iml
      kuvat                 
         avaa.png
         paaikkuna.png
      src                   - tänne harjoitustyön lähdekoodit
         fxKerho            - tänne käyttöliittymäkoodit
         kanta              - yleiskäyttöiset apuluokat
         kerho              - tänne käyttöliittymästä riippumattomat koodit
  
    paate                   - tänne pääteohjaukset (projekti)
      paate.iml
      paate1                - hakemisto pääteohjausta 1 varten
      paate2                - projekti pääteohjausta 2 varten
      paate3cmd             - hakemisto komentorivikääntämistä varten
         jarj               - paketti Java-tiedostoille
            Jarj2.java
    demot
      demot.iml
      src
         demo
             d1
                Karkit.java
                Koksqrt.java
                ...
             d2
                Etusuku.java
                Kissat.java
                ...
             d3
                ...

Tuon rakenteen ansiosta eri demoista on helppoa viitata toisiin demoihin.

3.2 Asetuksia

  • oikoluku pois:
    • File/Settings... (kannattaa tuo Alt+Ctrl+S opetella ulkoa :-)
    • laita hakusanaksi proof
    • valitse Editor/Inspections
    • ruksi Proofreading pois päältä

4. Käyttö

Jos kurssilla käsketään tehdä uusi Workspace Eclipseen, niin sitä vastaa IDEAssa projekti.

  • File/New/Project...
  • muista valita JDK:ksi se, missä on JavaFX

4.1 Uuden modulen luominen

Muista että IDEAssa Eclipsen projektia vastaa moduli. Eli jos kurssilla käsketään luoda uusi projekti, niin luo uusi moduli

  • File/New/Module...

4.2 FxmlPackageIDEA

M2 Macilla zip-tiedostot aukesi normaalisti, mutta ei toiminut. Täytyy siis tehdä manuaalisesti.

VL: Tuohon on nyt kokeeksi laitettu M2:lla tehty zip, kokeilkaa toimiiko ja kuitatkaa miten kävi.

17 Jan 24 (edited 17 Jan 24)

Tällä hetkellä IntelliJ IDEAssa on bugi, joka hävittää itsetehdyt Child templatet, kun ohjelman käynnistää uudelleen. Toivottavasti saavat päivitettyä. https://youtrack.jetbrains.com/issue/IJPL-155675/File-Templates-children-are-not-loaded-after-IDE-restart

Nyt löytyy päivitysversio 2024.1.4, jossa templatet eivät häviä.

17 Jun 24 (edited 23 Jun 24)

M2 Macilla vaikka zip-tiedosto avautui normaalisti, niin FxmlPackage ei toiminut. Täytyy tehdä manuaalisesti.

Jos nuo zipit eivät toimi, voi ne tehdä itsekin näillä ohjeilla

4.3 Kokeillaan toimiiko

Luodaan luotuun kurssin projektiin uusi moduli jarkoe, jossa kokeillaan toimiiko em asetukset:

  1. File/New Module...
  2. Name: jarkoe
  3. Create
  4. Mene kursorilla syntyneen jarkoe modulin nimen päälle klikkaa ja valitse src
  5. Klikkaa src hiiren oikealla.
  6. New/Pacakage ja nimeksi jarkoe
  7. Mene src/jarkoe päälle ja hiiren oikealla
  8. New/Java Class ja nimeksi JarDemo
  9. Kopioi sisällöksi
# jarkoe
package jarkoe;
import fi.jyu.mit.Music.MidiPlayer;
import fi.jyu.mit.graphics.*;
import fi.jyu.mit.ohj2.Mjonot;
/** Kokeillaan Jarreja */
public class JarDemo {
    /** @param args ei käytössä   */
    public static void main(String[] args) {
        var window = new EasyWindow();
        double x = 200, y = 200;
        window.add(new Circle(x,y-2*15-20-10,10));
        window.add(new Circle(x,y-15-20,15));
        window.add(new Circle(x,y,20));
        var mp = new MidiPlayer();
        var notes = Mjonot.tayta("C", 3) + "E";
        mp.play(notes);
    }
} 

JarDemo toimii, mutta JarDemo2 antaa virhettä "Error: Unable to initialize main class jarkoe.JarDemo2 Caused by: java.lang.NoClassDefFoundError: Stage". En tiedä onko ClassPath rakentunu oikein. Miten tapahtuu tarkistus, että JRE on JavaFX:lle tehty?

Problem solved. jdk-21-JavaFX oli unohtunut laittaa oletukseksi preferences/java/Installed JREs kohdassa.

09 Jan 24 (edited 10 Jan 24)

Olen lisännyt Jar-tiedostot, tehnyt globaalin kirjaston "ohj2" ja lisännyt sen Jarkokeen Dependenceihi. Silti ei IntellijIDEA tunnista importteja: "Cannot resolve symbol 'fi' ".

VL: Pääteohjauksissa (vaikka etä) voisi selvitä. Mutta tämähän on Eclipse ohje, oletko IDA-ohjeen lukenut huolella?

Olen lukenut kolmesti läpi IDEA-ohjeen, meen etäohjaukseen klo 12, niin päivitän tähän, saatiinko asia hoidettua.

[RATKAISU]

Olkaa varovaisia, kun luotte projektia IDEA:ssa. Valitaa "New Project", älkööt sitä IntelliJ:n omaa JavaFX templatee. IntellijIDEAN template käyttä "Mavenia". Haluat Build systeemiksi Intellij:n

24 Jan 24 (edited 24 Jan 24)
  1. Tulee paljon virheitä, pitää lisätä kirjasto
  2. Mene jarkoe-modulin nimen päälle ja paina hiiren oikealla.
  3. Open module settings
  4. Valitse Modules (tod.näk valittu) ja valitse jarkoe (tod.näk valittu)
  5. Valitse oikealta Dependensies.
  6. Paina isoa +-merkkiä Dependensies-kohdassa ja valitse Library....
  7. Valitse aikaisemmin luotu ohj2-kirjasto ja Add selected.
  8. Muista ruksia kirjasto ja OK.
  9. Virheiden pitäisi hävitä.
  10. Paina lähdekoodin päällä hiiren oikeaa ja Run jardemo.Main().

Tee vielä samaan moduuliin ja packageen toinen luokka nimeltä JarDemo2 ja sen sisällöksi:

# jardemo2
package jarkoe;
import javafx.application.Application;
import javafx.stage.Stage;
import fi.jyu.mit.fxgui.Dialogs;
/** Toinen jar kokeilu */
public class JarDemo2 extends Application {
    @Override
   public void start(Stage stage) {
       Dialogs.showMessageDialog("Oliko äsken soiva peli?");
   }
   
   /** @param args ei käytössä  */
   public static void main(String[] args) {
       launch(args);
   }
}

Aja tämä ohjelma.

Testataan vielä fxmlpackage:

  1. Mene jarkoe/src-hakemiston päälle, paina hiiren oikeaa ja new/FXMLPackage.
  2. Kirjoita isolla alkukirjaimella nimi, esim Kerho
  3. Tulee paketti fxKerho ja sen alle neljä tiedostoa. Valitse päätiedosto.
  4. Siinä on pari virhettä, saat ottaa ne pois käytöstä:
    • klikkaa oikeassa ylänurkassa huutomerkkiä niin että alhaalla näkyy virheet
    • valitse virhe ja hiiren oikealla Show Quick-Fixes
    • sen oikeassa laidassa on pystyssä kolme pistettä, klikkaa sitä
    • valitse Disable inspection
    • toista toiselle virheelle
    • ET SAA TEHDÄ tätä ilman lupaa, sillä on myös kurssin kannalta tärkeitä virheitä ja varoituksia ja ne pitää ottaa tosissaan.
  5. Nyt aja main, pitäisi tulla tyhjä ikkuna.

Kaiken tämän aika on saattanut oikeaan ylänurkkaan tulla kilikellon kuvan päälle merkki ilmoituksista, klikkaa sitä ja jos siellä on ilmoitus MS:n virustarkistuksesta, niin valitse automaattinen.

4.4 SceneBuilder

# ideacomtest

5. ComTestin käyttäminen IntelliJ IDEA:ssa

ComTest-testien generoimiseksi ja ajamiseksi on käytössä myös IntelliJ IDEA -plugin. Pluginin käyttöön tarvitaan

  • IntelliJ IDEA (Community tai Ultimate) versio 2023 tai uudempi

Kaikki muut tarvittavat vaatimukset asentuvat automaattisesti pluginin tai IDEA:n kanssa.

IntelliJ IDEA päivittyi ja ilmoittaa ettei Comtest plugin toimi vaan vaatii vanhemman IntelliJ IDEAn

DZ: Kiitos tiedosta. ComTest Plugin on nyt päivitetty tukemaan uusinta IDEAn versiota. Päivitä plugin seuraamalla alla olevat asennusohjeet.

29 Mar 23 (edited 30 Mar 23)

5.1 Pluginin asentaminen

  1. Avaa IntelliJ IDEA.

  2. Avaa pluginien latausnäkymä:

    • Jos sinulle avautuu Welcome to IntelliJ IDEA -ikkuna, klikkaa sen vasemmassa reunassa oleva Plugins-painike:

    • Jos sen sijaan sinulle avautuu koko IDE, mene File | Settings | Plugins:

  3. Valitse Marketplace-välilehti ja syötä hakupalkkiin ComTest

  4. Valitse Install löytyneestä ComTest Runner -pluginista ja anna pluginin asentua

  5. Käynnistä IntelliJ IDEA uudelleen

5.2 Käyttöesimerkki

Testataan vielä, että plugin toimii.

  1. Mene jarkoe/src päälle (moduli jarkoe joka on tehty edellä):

  2. Lisää src-kansioon uusi pakkaus (eli hiiren oikealla New Package) example ja siihen uusi luokka (hiiren oikealla paketin ) Laskuja

  3. Lisää Laskuja.java -luokkaan testikoodi:

    package example;
    
    /** Kokeillaan testejä */
    public class Laskuja {
        /**
         * @param a eka summattava 
         * @param b toka summattava
         * @return a+b
         * @example <pre name="test">
         *   summa(2,3) === 5;
         *   summa(-5,5) === 0;
         *  </pre>
         */
        public static int summa(int a, int b) {
            return a + b;
        }
    
        /** @param args ei käytössä */
        public static void main(String[] args) {
            System.out.println("Summa = " + summa(3,2));
        }
    }
  4. Tulee yksi varoitus @example, lisää se omiin tageihin:

    • oikean yläkulman huutomerkki
    • alhalla varoituksen päällä Quick Fix
    • Add Custom Tags
  5. Avaa kontekstivalikko (klikkaa editorissa hiiren oikealla painikkeella) ja valitse ComTest | Run in Current File

  6. Ensimmäisellä kerralla IDEA kysyy JUnit-kirjaston asentamisesta. Jos näin käy, paina OK avautuvasta valikosta muuttamatta asetuksia:

  7. Jos kaikki oli tehty oikein, testien ajo käynnistyy koodin kääntämisen jälkeen ja näet lopputuloksen IDEA:n alalaidassa:

5.3 comt-snipetin käyttö

Pluginissa on valmis snipetti testien kirjoittamiseksi.

Käyttöohje:

  1. Lisää dokumentaatio funktioon, jolle kirjoitat testit. Jätä @return-määreen jälkeen vielä yksi rivi, jossa on vain *. Esimerkiksi

    /**
     * Kertoo luvut keskenään.
     * 
     * @param a Luku a
     * @param b Luku b
     * @return Lukujen a ja b tulo
     * 
     */
    public static int tulo(int a, int b) {
        return a * b;
    }
  2. Siirrä kursori @returnin jälkeiselle riville ja kirjoita comt. Paina lopuksi koodin täydennysyhdistelmää (yleensä Ctrl + Space), jolloin snipetti ilmestyy valittavaksi:

  3. Paina Enter, jolloin dokumentaatioon ilmestyy ComTest-testauspohja:

    /**
     * Kertoo luvut keskenään.
     *
     * @param a Luku a
     * @param b Luku b
     * @return Lukujen a ja b tulo
     * @example <pre name="test">
     *  
     * </pre>
     */
    public static int tulo(int a, int b) {
        return a * b;
    }

5.4 Kaikkien testien ajaminen pakkauksessa

Demokäytössä riittää usein testien ajaminen vain yhdelle luokalle kerrallaan. Isommissa projekteissa testit saattavat löytyä useasta luokasta, jolloin nouse tarve ajaa kaikki testit kerrallaan.

Kaikkien testien generointi ja ajaminen:

  1. Valitse projektinäkymässä testattava pakkaus (tai koko src)-kansio ja avaa kontekstivalikko (yleensä hiiden oikea klikkaus)

  2. Valitse ComTest | Run in Current Package

Testeistä luodaan automaattisesti JUnit-ajokonfiguraatiot (katso Run | Edit Configurations), eli testit voi ajaa myös nopeasti generoimatta niitä uudelleen.

5.5 Pikanäppäimet

Voit tehdä ComTestille (ja mille vaan toiminnolle) pikanäppäimen seuraavasti:

Keyboard shortcut
Keyboard shortcut
  • File
  • Settings...
  • kirjoita hakulaatikkoon comtest
  • valitse Keymap
  • mene haluamasi toiominnon kohdalle
  • paina hiiren oikealla
  • valitse Add Keyboard Shortcut
  • mene aukeavaan kohtaan ja paina halumaasi näppäinyhdistelmää (esim Ctrl-Q)

5.6 Lisää ComTest-esimerkkejä

Katso ComTestin edistynyttä käyttöä alkuperäisistä ComTest-ohjeista.

6. Olemassa olevan Eclipse-projektin lisääminen moduliksi

  • File/New/Module from Existing Sourcess...
  • Etsi projekti ja se kansio, jonka alla on src-hakemisto
  • Create module from exixsting sources tai Import... ja Eclipse
  • klikkaile loppuihin oletuksilla
  • lisää mahdollisesti tarvittavat kirjastot kuten edellä
# luojar

7. Ajettavan .jar-tiedoston luominen

Seuraavana tekoälyn tekemät ohjeet, joku voisi korjata tarvittaessa

  1. Avaa IntelliJ IDEA ja siirry projektiisi.

  2. Valitse "File" (Tiedosto) ylävalikosta ja sitten "Project Structure" (Projektirakenne).

  3. Valitse "Artifacts" (Artifaktit) -välilehti vasemmasta valikosta.

  4. Napsauta "+" -painiketta ja valitse "JAR" -> "From modules with dependencies" (Moduuleista riippuvuuksineen).

  5. Valitse moduuli, jonka haluat sisällyttää JAR-tiedostoon. "Main Class:" kohdasta voit määrittää mistä löytyy ohjelman käynnistettävä main luokka.

  6. "JAR files drom libraries" kohta "extract to the target JAR" tallentaa oletussijaintiin, "copy to the target output..." voi itse määritellä META-INF/MANIFEST.MF: sijainnin esimerkiksi harjoitustyön "bin kansioon"

  7. Klikkaamalla ok voit vielä vaihtaa asetuksia, kuten .jar tiedoston nimi ja sijainti, tarkennuksia class-pathiin, main luokkaan tai manifest tiedostoon.

  8. Kun olet valmis, napsauta "OK" ja sitten "Apply" (Käytä).

  9. Lopuksi, valitse "Build" (Rakenna) ylävalikosta ja sitten "Build Artifacts" (Rakenna artifaktit), ja valitse haluamasi vaihtoehto, esimerkiksi "Build".

  10. Tämä syntynyt .jar tiedosto pitää pakottaa erikseen lisäytymään Gitiin, koska muuten .jar on kielletty laittamasta sinne. Esimerkiksi (hakemistossa johon teit .jar):

    git add -f kerho.jar
    git commit -m "lisatty jar" 
    git push

Jos koko on yli 100-200kb, mukaan on päätynyt tarpeetonta sisältöä esim. Graphics.jar ja Music.jar. Project Structure / Artifacts -valikossa voit yksinkertaisesti poistaa turhat, ne näkyvät esim. nimellä "Extracted 'Ali.jar/'".

13 Feb 24

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