Child pages
  • Futtatható jar file készítése.
Skip to end of metadata
Go to start of metadata
Sziasztok!

Most ismerkednék a Java programozással. Távoktatásban veszek részt egy főiskolán és ott kaptam (felvettem) mint tantárgyat.
Kaptam egy könyvet (OOP 2 Angster Erzsébet) azt hajrá.
Létrehoztam egy projektet, ez a gyak1_sajat benne az src és a classes mappa, utóbbiban az src struktúra tükörképe.
A lényeg, hogy most kellene készítenem egy batch file-t. De lövésem nincs hozzá, és ami a könyvben van az nekem ezekszerint kevés.
Odáig eljutottam, hogy megnyítom a WIn Xp parancssorát és beírom a
c:\> jar cf gyak1_sajat.jar meta-inf\Manifest.fm

De nem igazán láttam még ilyen dolgot, ezért nem is tudom hogyan kellene csinálnom.
XP-t és JBuilder 2006-ot használok.

Ha van valami ötlet szívesen olvasnám.
      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels

11 Comments

  1. Itt azért más baj is van. A classes/Main.class nem jó. Mivel nincs megadva csomagnév a forrásban, a JBuilder teszi csak bele a classisba. Neked az nem jó, ilyesmi kellene:

    META-INF/
    META-INF/MANIFEST MF
    Main.class

    A META-INF azért van kétszer, mert az egyik a könyvtár neve, a másik pedig már a tartalma, teljesen normális...
  2. A JBuildernek meg kell tudnia csinálni a megfelelő JAR fájlt. Nem hiszem el, hogy nem képes rá...

    A hiba egyébként az lehet, hogy a manifest.mf tartalma nem megfelelő. A NetBeans ezt írja bele (például):

    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.6.5
    Created-By: 1.6.0-rc-b104 (Sun Microsystems Inc.)
    Main-Class: ezmorph.Main
    Class-Path: lib/ezmorph-1.0.jar
    X-COMMENT: Main-Class will be added automatically by build

    Neked "Main-Class: ezmorph.Main" sort kell átírni arra, hogy: "Main-Class: Main" és a Class-Path kezdetű sor nem kell.
  3. Unknown User (mezofi)

    Hogyan adom meg a csomagnevet?
    De az nem jó, hogy package classes;

    Mert a Main.java az SRC-ben van. A Main.class pedig a classes-ben.
    Amint beírom a package-t le sem fut a progi, hanem hibát ír ki.
  4. Unknown User (mezofi)

    Hogyan adom meg a csomagnevet?
  5. Unknown User (mezofi)

    Azt hiszem meg tudtam csinálni a jar file-t.

    Van egy Main.java class-om a classes file-ban. Ennek ennyi a tartalma:

    public class Main {
        public static void main(String[] args) {
            //az indító osztály helye
            //new Osztály ......
           System.out.println( "Próba" );
        }
    }
    Ez ugye kiírja a "Próba" szót alulra futtatás után.
    Ezt jar file-ra átdolgoztam és ezt kaptam amikor kilistáztattam a jar file tartalmát:
    META-INF/
    META-INF/MANIFEST MF
    classes/Main.class

    Már ott gyanús a dolog, hogy mi az az első "META-INF/"

    Amikor kétszer kattintok a jar file-ra ezt a hiba üzenetet kapom:
    Could not find the main class. Program will exit.

    Miért is nem találja a main-t?
  6. Nem tudom, hogy JBuilderben hol áll elő a JAR fájl, de NetBeans esetén a Build menü Build menüpontja teszi ezt, és a projekt könyvtárán belül a dist mappában ott lesz egy futtatható JAR.
  7. Sőt, talán inkább:
    jar cmf meta-inf\Manifest.mf gyak1_sajat.jar -C classes .
  8. Nem csomagnevet kell megadnod, hanem a class fájl hierarchia gyökerét. Ha jól tévedek nálad ez a "classes". A C opció ideiglenesen megváltoztatja a könyvtárat a következő paraméter feldolgozásáig. Valami ilyesmi kell:
    jar cf gyak1_sajat.jar -C classes . -C . meta-inf\Manifest.mf 

    A manifest.mf-be pedig kell egy ilyen sor, hogy tudja a java mit kell elindítani:

     Main-Class: Main
  9. Unknown User (mezofi)

    Ha nem haragszotok meg a sok kérdésemér, akkor még az lenne a kérdésem, hogy mindíg kötelező main.class-nak lennie?
    Mert a könyvből beírtam egy olyan project-et ami egy konzolt jelenít meg, de az csak egy class az egész, és nincs main.class.
    Tehát akkor mit kell megadnom a manifest-ben?
  10. Unknown User (mezofi)

    Köszi. Ez a megoldás, és ez is van leírva a könyvben, de a végéről a pontot lehagytam mindíg, azt hittem az a mondat vége


    Köszi mindenkinek a segítséget.
  11. Unknown User (mezofi)

    Inkább próbáltam volna a gondolataimat összeszedni mielött kérdezek!
    Persze akkor a main helyett az egy class nevét kell beírni.
    Jóéjt.