04. september 2001 - 00:06
Der 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.
04. september 2001 - 00:09
#1
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.
//seider
04. september 2001 - 01:59
#2
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.
Du kan finde mere information her:
http://developer.java.sun.com/developer/Books/JAR/basics/build.html
04. september 2001 - 02:06
#3
Du kan da forøvrigt sagtens køre din applikation uden det værktøj du har brugt til at lave den med, og uden jar-filer.
04. september 2001 - 08:22
#4
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.
04. september 2001 - 11:53
#5
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
04. september 2001 - 16:51
#6
Jeg forstår ikke helt tror jeg. En trinvis forklaring ville være godt. Forresten bruger jeg KAWA som builder
04. september 2001 - 16:54
#7
Skal classen være tilknyttet et projekt før man kan lave den til en jar file?
04. september 2001 - 17:27
#8
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
04. september 2001 - 18:36
#9
.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.
04. september 2001 - 21:27
#10
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! :)
Mvh Ricky
05. september 2001 - 06:11
#11
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.
Ang. Kawa, må jeg desværre melde pas.
05. september 2001 - 08:50
#12
rickypriv:
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
06. september 2001 - 16:29
#14
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?
06. september 2001 - 16:57
#15
En ekstrem simpel
\"1. skriv/gør det
2. skriv/gør så det
3. skriv/gør derefter det\"
ville være meget rart. :)
06. september 2001 - 19:12
#16
Ok, jeg prøver.
Gå ud i DOS, og ned i det bibliotek, din klasse ligger i (f.eks. C:\\source)
(Til dette eksempel skal vi køre klassen MyClass).
C:\\source>notepad manifest.txt
(skriv følgende:)
Main-class: Myclass
(husk ENDELIG en tom linie nedenunder)
(file-save-exit).
C:\\source>jar cvfm myjar.jar manifest.txt MyClass.class
c:\\source>
Og det var det. Prøv at dobbeltklikke på den i windows explorer, og se om den eksekverer.
Hvis du referer til andre klasser, som du selv har skrevet, kan du evt. rette jarkommandoen til
c:\\source>jar cvfm myjar.jar manifest.txt *.class
13. september 2001 - 15:04
#17
Hvad, spilder man sin tid eller har I fået det til at virke?
05. oktober 2001 - 02:05
#18
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
Kurser inden for grundlæggende programmering