Gyakorlati alapok III.
Több osztály + több main()
A kérdés tehát az előző fejezetben foglaltak alapján az, hogy miként fognak az algoritmusok viselkedni, ha több osztály több main() főprogramot is tartalmaz?
Ennek modellezésére rögtön gyártunk is 1 releváns helyzetet:
Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Ez itt a
Main osztály.");
}
}
Main2.java
public class Main2 {
public static void main(String[] args) {
System.out.println("Ez itt a
Main2 osztály.");
}
}
Main3.java
public class Main3 {
public static void main(String[] args) {
System.out.println("Ez itt a
Main3 osztály.");
}
}
No, ennél egyszerűbb nem is lehet 1 többosztályos működés...
Ha Eclipse-ben megalkottuk a fenti kódhelyzetet, akkor a keletkezett 3 osztályt külön "osztályfülökön" láthatjuk:
Az Eclipse érzékeli a main() redundanciát és mindig az a main() főprogram fog lefutni, amelyik osztály éppen aktív (azaz amelynek füle éppen előtérben van). Ennek ellenére már okoztunk magunknak 1 megoldandó problémát, mert a programnak több belépési pontja van.
Ez akkor látszik terebélyesedni, ha a kódot futtatható .jar állománnyá kívánjuk exportálni:
Export... -> Runnable JAR file
Az utolsó ablak kulcsfontosságú a korrekt futtatás szempontjából:
Az Eclipse érzékeli az összes (értsd: a munkafelületünkön /workspace/ lévő) main() főprogramot és kilistázza a Launch configuration opcióban. Itt tehát konkrétan rá kell mutatnunk az általunk futtatni kívánt main() főprogramra.
Ha így teszünk, a kívánt main() főprogram futtatása az elvárt eredményeket fogja szolgáltatni...
...másként igen színes hibajelenségekkel szembesülhetünk.
Javaslatom tehát, hogy programjainknak -ha csak nincsenek erre alaposabb okaink-, alapértelmezésben csak 1 belépési pontot, azaz 1 db main() főprogramot tartalmazzon.