A jar állományok futtatása
2012-01-21T21:45:36+01:00
2012-01-22T22:08:02+01:00
2022-07-24T06:47:21+02:00
  • A "." az az a könyvtár, ami épp aktuális volt, amikor a programodat elindították. Ennek nem kell egyenlőnek lennie azzal a könyvtárral, ahol a programod JAR fájlja van. Épp ezért ez alatt a könyvtár alatt se keresni, se létrehozni nem érdemes fájlokat illetve könyvtárakat. Ha átmeneti célra akarsz fájlt vagy könyvtárat létrehozni, a "System.getProperty("java.io.tmpdir")" ad neked egy elérési utat, ami alatt ezt megteheted.

    Ha a JAR fájlodból akarsz megnyitni fájlokat, akkor ha URL-t akarsz kapni belőle:
    this.getClass().getClassLoader().getResource("fajl_neve");
    ha InputStream-et, akkor pedig:
    this.getClass().getClassLoader().getResourceAsStream("fajl_neve");
    A te példádban konkrétan az ImageIcon URL-es overload-ját kéne használni:
    cp.add(alp_logo=new Jlabel(new ImageIcon(this.getClass().getClassLoader().getResource("alpokalja.gif"))),"North");

    Legalább is ha minden igaz...
    Mutasd a teljes hozzászólást!
  • Köszönöm a hozzászólásokat Csaboka2-nek és Mekkelek5-nek!

    Arra gondolok, hogy többek között egy kép nem szerepel az alkalmazásban, pedig annak elérési útja a kódba határozottan bele lett írva. Az is előfordul, hogy egy mentési dialógusablak nem a kódban meghatározott helyen kezdi a keresést (hogy hova mentsen). Mindkettőre adok példát:

    cp.add(alp_logo=new Jlabel(new ImageIcon(“./alpokalja.gif")),"North");

    A mentési dialógusablakban a következő a probléma:

    savechooser.setCurrentDirectory(new File(“./alp_szoveg_working_directory"));

    A mentési dialógusnak a mentés előtt erről a pontról kellene kezdenie a keresést, ehhez képest a gyökérkönyvtár egy más pontjáról kezdi, de véletlenül sem onnan, ami a kódban szerepel. Ugyanez a probléma megnyitáskor, az Opendialog(); hívásakor:

    filechooser.setCurrentDirectory(new File(“./alp_szoveg_working_directory"));

    aminek a keresést a projectkönyvtár bizonyos pontjáról kellene kezdenie a keresést. A leírtakkal szemben az a tapasztalatom, amennyiben a futás egy .bat fájlról történik, az mindig pontosan hajtja verge a kódot, mivel magát a main(); metódust tartalmazó osztályt hívja.
    Mutasd a teljes hozzászólást!
  • Kicsit másként kell írni a kódot, ha JAR-ba van csomagolva a program (és a fájlok), és másként ha nincs. Pontosabban az elérési utat kell másként megadni, nem mindegy, hogy JAR-on belül vagy kívül van a fájl, amit be akarsz tölteni.

    Mutasd a kódot, hogy hogyan töltöd be a fájlt és szerintem hamar kapsz segítséget, hogy mit kell rajta változtatni.

    Egyébként lehet, hogy a fájlt a JAR-ban keresi a programod, de az nincs beépítve. Nézd meg először a JAR-t (mondjuk Winrar-al kicsomagolod), hogy valóban ott vannak e a fájlok.
    Mutasd a teljes hozzászólást!
  • Tudja valaki, hogy a JAVA fordító miért nem azt fordítja, ami a forráskódban szerepel?


    De, azt fordítja.

    A .jar állományok nekem rendszeresen nem úgy működnek, ahogy azt a forráskódban leírom. Nagyjábol úgy működnek, de a megadott elérési utakat a .jar nem ismeri fel, azokat nem hajtja végre. Nem tudjatok, miért van ez?


    Ez nagyon homályosra sikeredett. Milyen elérési utakról van szó? És hogy kéne őket végrehajtani?

    Talán másolj be valami rövidebb kódrészletet, aztán írd le, hogy szerinted mit kellene csinálnia, és mit csinál helyette. Biztosra veszem, hogy a fordítónak semmi baja, csak te értesz félre valamit...
    Mutasd a teljes hozzászólást!
  • Tudja valaki, hogy a JAVA fordító miért nem azt fordítja, ami a forráskódban szerepel?

    A .jar állományok nekem rendszeresen nem úgy működnek, ahogy azt a forráskódban leírom. Nagyjábol úgy működnek, de a megadott elérési utakat a .jar nem ismeri fel, azokat nem hajtja végre. Nem tudjatok, miért van ez?

    Ha írok egy .bat parancsfajlt, az ezzel szemben mindent felismer. Mondhatjátok, hogy akkor futtassam így a programjaimat, de az új gépem egy Mac, és ezen nem tudom, hogyan kell .bat fájlt futtatni.
    Mutasd a teljes hozzászólást!
abcd