En ole ennen .jar tiedostoja koittanut kutsua koodin kautta, joten ei ihme että ei onnistunut. Voisiko joku auttaa, koitan tässä kutsua oman laskimen main(String[] Args) metodia, mutta huonolla onnella: Tässä on koodi jonka kirjoitin (ja ei siis toimi):
String clsName = "javacalculator.Main";
Class cls = null;
try {
cls = Class.forName(clsName);
} catch (ClassNotFoundException e) {
Log.error_log(e, settings);
}
try{
Method[] m = cls.getMethods();
for (int i = 0; i<m.length; i++){
if (m[i].getName().equals("main"))
m[i].invoke(null);
}
//Method m =cls.getMethod("main");
//m.invoke(this, null);
}catch (Exception e){
Log.error_log(e, settings);
}Tuossa kohdassa invoke se heittää java.lang.IllegalArgumentException: wrong number of arguments virheen, mutta koitin antaa sille String[] ja heitti saman, dokumtaation mukaan staatisille metoodeille voi antaa null, ja pitäis toimia hyvin, varmaan jotain mitä en ole yhtään tajunut nyt...
Kuten virhe sanoo, kutsut main-metodia väärällä määrällä argumetteja (nolla). Jos haluat kutsua main:ia null-argumentilla pitää invoke-metodille antaa parametriksi taulukko, jonka ensimmäinen (ja ainoa) alkio on null.
m[i].invoke(this, new Object[]{null});Tuo ensimmäinen this voi olla null, jos kutsut metodia staattisesta metodista.
Mutta miten tämä ongelma liittyy jar-paketeista lataamiseen? Onko sinulla jokin hyvä syy käyttää dynaamista luokanlatausta vai etkö vain tiedä, että voit yhtähelposti kutsua omien luokkiesi metodeja jar-pakettien sisältä kuin normaalistikin, kunhan vain lisää jar-paketin classpath:iin.
javacalculator.Main.main(null);
kunhan vain kokeilen, ei siihen mitään syytä ole...
kiitos
Aihe on jo aika vanha, joten et voi enää vastata siihen.