04. september 2001 - 00:06Der er
17 kommentarer og 1 løsning
JAR fil(er)
Hej jeg har lavet en applikation som jeg gerne vil kunne føre uden at starte min builder. Til det formål kan jeg vist så vidt jeg ved vælge mellem 1 af 3 måder. 1: Jeg kan lave en applet og binde den til min applikation(Dette kan jeg ikke da jeg kun kan lave applikationer) 2: Jeg kan ved hjælp af en speciel compiler omdanne min class fil til en exe fil. Dette vil jeg heller ikke gøre da det vist strider mod alt hvad java står for :) 3: Min sidste udvej er så at lave JAR fil(er). Men jeg aner intet om hvordan man gør eller hvad det er. Så jeg ville blive glad hvis nogle kunne forklare mig præcis hvad en JAR fil er hvordan den virker og hvordan man gør. Jeg udlover 100 point.
en jar file er en java archive og den indeholder gerne flere java filer, så det hjælper dig ikke hvis du vil køre en java fil skal du have en java compiler eller en java JIT compiler på dit system.
for at lave en jar fil, er det nemmeste at lave en ny mappe, og kopiere din java fil derover, hvorefter du re-kompilerer denne. Åbn et dos-vindue, og gå til den mappe du lige har oprettet, og skriv følgende komando:
jar cf jarfilensnavn.jar *.class
nu skulle du have en jar fil indeholdende alle class-filerne i mappen. Husk at mappen med Jar.exe skal ligge i pathen.
En jar fil er et pakket arkiv med .class og .java filer inden i (der kan også være andre typer filer)
Din JVM kan så eksekvere dine .class filer direkte i det pakkede arkiv. Hvis du pakker din applet .class\'es i en jar er load tiden også hurtigere set fra brugerens synspunkt.
For at lave et arkiv skriver du:
jar cf JarFileName.jar *.class
Hvis du til samme arkiv vil add\'e f.eks. dine .java filer skriver du bare bagefter
jar cf JarFileName.jar *.java
Dette ønsker man dog normalt ikke ved en applet, da load tiden bliver forlænget.
Der er enkelte detaljer vedr. eksekvering fra en .jar fil der måske skal belyses: 1) virker først fra jdk1.2 2) kræver at manifest filen indeholder information om hvilken klasse der skal startes.
Pkt. 1 skulle ikke være noget problem. Pkt. 2 har jeg ikke fundet anden tilfredsstillende løsning på end at pakke klasserne, udpakke default manifest, redigere manifestet og putte manifestet tilbage i jar filen:
jar -cf klump.jar -C dinKlasseDir dinpackage jar -fx klump.jar META-INF/MANIFEST.MF rediger manifest jar -ufm klump.jar META-INF/MANIFEST.MF
Manifestet skal redigeres, så det indeholder linien Main-Class: dinpakke.DinHovedKlasse
En alternativ metode, hvis applikationen kun skal startes i windows, er at oprette et link, hvor target er: javaw -cp dineklasser dinpakke.DinHovedKlasse
Og hvad er et manifest? Skal man både bruge .java+.class+.kpx for at lave en jar fil, eller er 1 .class nok hvis du altså er en meget simpel applikation der ik bruger andre klasser
.kpx er en fil til kawa... Denne er ikke nødvendig til andet!
Alt i dit program er i dine java filer og ikke i din .kpx fil der kun indeholder information om hvilke filer (og måske lidt andet) der er tilknyttet projektet, når du bruger det i Kawa.
Jeg skal lige have det skåret ud pap (arbejder sammen med bumle90 i at få progammet til at virke uden JDK):
Det er nogen fine kommentarer i kommer med. Men det hele drejer sig om at vi i Kawa har lavet et lille program, som er compileret til class filer.
Så vidt så godt. Men nu vil vi gerne have at programmet kan køre på maskiner hvor JDK ikke nødvendigvis er installeret.. Og til det skal man lave en jar-fil (ret mig hvis jeg tager fejl).
Jeg kan forstå at vi skal skrive følgende i dospromt, når vi har lagt alle class filer over i en temp mappe:
jar cf etellerandet.jar *.class
Hvorefter der gerne skulle komme en jar-fil som kan eksekveres? Korrekt?
Men vi ved at det kan gøres gennem Kawa også.. men hvordan? Trin for Trin! :)
jar.exe følger med JDK, så det er nødvendigt med JDK for at lave .jar filen. Når denf ørst er lavet, kan programmet køres på enhver maskine med JRE (altså _ikke_ JDK) installeret.
Manifest filen er en fil, der automatisk lægges i et .jar arkiv og som indeholder information fra Java til Java ;). Deriblandt evt. information om hvilken klasse der skal startes, når en .jar fil bliver \'kørt\'. Det vil være en god idé at kigge på referencen givet af nico22.
jar -cf etellerandet.jar *.class opretter ganske rigtigt din .jar-fil, men uden den rigtige information i Manifest filen. Derfor den lange smøre i ovenstående svar.
Ja der kommer en jar fil ud hvori der er .class filer som du kan eksekverer, men du skal ALTID have et JRE, altså et runtime enviroment for at kunne afvikle java programmer.
Taget fra: java Usage: java [-options] class [args...] (to execute a class) or java -jar [-options] jarfile [args...] (to execute a jar file)
where options include: -cp -classpath <directories and zip/jar files separated by ;> set search path for application classes and resources -D<name>=<value> set a system property -verbose[:class|gc|jni] enable verbose output -version print product version and exit -showversion print product version and continue -? -help print this help message -X print help on non-standard options
logical eller en anden vil du ikke prøve at skrive et konkret eksempel på en manifest fil som gør at jeg kan dobbeltklikke på den i windows. Jag har kun en klasse i mit prgm. Det der med at pakke manifest filen sammen med class filen til en jar hvordan gør jeg det. Ville være lækkert hvis en kunne forklare det i henhold til KAWA, da det er det jeg bruger. Og lige et spørgsmål til. Alle de fine kommandoer i bruger der til at lave en JAR fil, skrive jeg dem i en DOS-prompt eller hvad?
Undskyld logical...jeg har haft utrolig meget at se til her i den sidste tid, så derfor har jeg ikke fået givet dig de point som du har fortjent eftersom du kom med en god forklaring. Tak skal du have, og undskyld ventetiden
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.