IntelliJ IDEA
IntelliJ Idea on yksi vaihtoehto Eclipselle.
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
—2. JetBrains-opiskelijalisenssi
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!
- Rullaa kohtaan
- 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
jaNew 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
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 tuoAlt+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
- lataa johonkin
- Windows/Linux: fxmlpackageIDEA.zip
- Mac Intel: fxmlpackageidea.zip
- Mac M1: fxmlpackageM1.zip
- Mac M2: fxmlpackageM2.zip
File/Manage IDE settings/Import
- etsi lataamasi zip-tiedosto ja open
- IDEA käynnistyy uudelleen
- testataan tämä kun on kurssin kirjastot laitettu ja testattu
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.
—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ä.
—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 seuraavilla ohjeilla:
Ota
File/Settings/File and Code Templates
Aloitetaan uusi, eli se iso +
Name:
FXMLPackage
Extension:
java
File name:
/fx${NAME}/${NAME}Main
Sisältö:
package fx${NAME}; #if (${PACKAGE_NAME} == "PACKAGE_NAME")package fx${NAME};#end import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.Pane; import javafx.fxml.FXMLLoader; /** * @author ${USER} * @version ${DATE} * */ public class ${NAME}Main extends Application { @Override public void start(Stage primaryStage) { try { FXMLLoader ldr = new FXMLLoader(getClass().getResource("${NAME}View.fxml")); final Pane root = ldr.load(); //final KerhoController kerhoCtrl = (KerhoController) ldr.getController(); Scene scene = new Scene(root); scene.getStylesheets().add(getClass().getResource("${NAME.toLowerCase()}.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.setTitle("${NAME}"); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } /** * @param args Ei käytössä */ public static void main(String[] args) { launch(args); } }
Apply
Sitten tehdään tällä kolme lapsi-templatea, eli
- css:
Paina sitä ikonia jossa on sivunkuva ja +
File name:
fx${NAME}/${NAME.toLowerCase()}
Extension:
css
Sisältö:
/* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */
Apply
- View:
Paina sitä ikonia jossa on sivunkuva ja +
File name:
fx${NAME}/${NAME}View
Extension:
fxml
Sisältö:
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.layout.BorderPane?> <BorderPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="fx${NAME}.${NAME}Controller"> <!-- TODO Add Nodes --> </BorderPane>
Apply
- Controller:
Paina sitä ikonia jossa on sivunkuva ja +
File name:
fx${NAME}/${NAME}Controller
Extension:
java
Sisältö:
package fx${NAME}; #if (${PACKAGE_NAME} == "PACKAGE_NAME")package fx${NAME};#end /** * @author ${USER} * @version ${DATE} * */ public class ${NAME}Controller { // TODO }
Apply
- css:
OK
Voit vaulta Exportata tämän zip-tiedostoksi jos joudut tekemään uudestaan:
File/Manage IDE Settings/Export Settings...
- Ota kaikki ruksit pois
- Ruksi molemmat
File Templates
-kohdat - laita hyvä nimi ja paikka
OK
4.3 Kokeillaan toimiiko
Luodaan luotuun kurssin projektiin uusi moduli jarkoe
, jossa kokeillaan toimiiko em asetukset:
File/New Module...
Name:
jarkoe
Create
- Mene kursorilla syntyneen
jarkoe
modulin nimen päälle klikkaa ja valistesrc
- Klikkaa
src
hiiren oikealla. New/Pacakage
ja nimeksijarkoe
- Mene
src/jarkoe
päälle ja hiiren oikealla New/Java Class
ja nimeksiJarDemo
- Kopioi sisällöksi
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.
—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
—- Tulee paljon virheitä, pitää lisätä kirjasto
- Mene
jarkoe
-modulin nimen päälle ja paina hiiren oikealla. Open module settings
- Valitse
Modules
(tod.näk valittu) ja valitsejarkoe
(tod.näk valittu) - Valitse oikealta
Dependensies
. - Paina isoa
+
-merkkiä ja valitseLibrary...
. - Valitse aikaisemmin luotu
ohj2
-kirjasto ja `Add selected. - Muista ruksia kirjasto ja
OK
. - Virheiden pitäisi hävitä.
- 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:
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
:
- Mene
jarkoe/src
-hakemiston päälle, paina hiiren oikeaa janew/FXMLPackage
. - Kirjoita isolla alkukirjaimella nimi, esim
Kerho
- Tulee paketti
fxKerho
ja sen alle neljä tiedostoa. Valitse päätiedosto. - 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 kursin kannalta tärkeitä virheitä ja varoituksia ja ne pitää ottaa tosissaan.
- 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
- tarvittaessa laita sijainti ohjeen mukaan
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.
—5.1 Pluginin asentaminen
Avaa IntelliJ IDEA.
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:
Valitse Marketplace-välilehti ja syötä hakupalkkiin ComTest
Valitse Install löytyneestä
ComTest Runner
-pluginista ja anna pluginin asentuaKäynnistä IntelliJ IDEA uudelleen
5.2 Käyttöesimerkki
Testataan vielä, että plugin toimii.
Mene
jarkoe/src
päälle (modulijarkoe
joka on tehty edellä):Lisää
src
-kansioon uusi pakkaus (eli hiiren oikealla New Package)example
ja siihen uusi luokka (hiiren oikealla paketin )Laskuja
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)); } }
Tulee yksi varoitus
@example
, lisää se omiin tageihin:- oikean yläkulman huutomerkki
- alhalla varoituksen päällä
Quick Fix
Add Custom Tags
Avaa kontekstivalikko (klikkaa editorissa hiiren oikealla painikkeella) ja valitse ComTest | Run in Current File
Ensimmäisellä kerralla IDEA kysyy JUnit-kirjaston asentamisesta. Jos näin käy, paina OK avautuvasta valikosta muuttamatta asetuksia:
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:
Lisää dokumentaatio funktioon, jolle kirjoitat testit. Jätä
@return
-määreen jälkeen vielä yksi rivi, jossa on vain*
. EsimerkiksiSiirrä kursori
@return
in jälkeiselle riville ja kirjoitacomt
. Paina lopuksi koodin täydennysyhdistelmää (yleensäCtrl + Space
), jolloin snipetti ilmestyy valittavaksi:Paina
Enter
, jolloin dokumentaatioon ilmestyy ComTest-testauspohja:
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:
Valitse projektinäkymässä testattava pakkaus (tai koko
src
)-kansio ja avaa kontekstivalikko (yleensä hiiden oikea klikkaus)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:
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. 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
taiImport...
jaEclipse
- klikkaile loppuihin oletuksilla
- lisää mahdollisesti tarvittavat kirjastot kuten edellä
7. Ajettavan .jar-tiedoston luominen
Seuraavana tekoälyn tekemät ohjeet, joku voisi korjata tarvittaessa
Avaa IntelliJ IDEA ja siirry projektiisi.
Valitse "File" (Tiedosto) ylävalikosta ja sitten "Project Structure" (Projektirakenne).
Valitse "Artifacts" (Artifaktit) -välilehti vasemmasta valikosta.
Napsauta "+" -painiketta ja valitse "JAR" -> "From modules with dependencies" (Moduuleista riippuvuuksineen).
Valitse moduuli, jonka haluat sisällyttää JAR-tiedostoon. "Main Class:" kohdasta voit määrittää mistä löytyy ohjelman käynnistettävä main luokka.
"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"
Klikkaamalla ok voit vielä vaihtaa asetuksia, kuten .jar tiedoston nimi ja sijainti, tarkennuksia class-pathiin, main luokkaan tai manifest tiedostoon.
Kun olet valmis, napsauta "OK" ja sitten "Apply" (Käytä).
Lopuksi, valitse "Build" (Rakenna) ylävalikosta ja sitten "Build Artifacts" (Rakenna artifaktit), ja valitse haluamasi vaihtoehto, esimerkiksi "Build".
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/'".
—These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.