Avatar billede bumle90 Nybegynder
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.
Avatar billede seider Nybegynder
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
Avatar billede nico26 Nybegynder
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
Avatar billede nico26 Nybegynder
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.
Avatar billede disky Nybegynder
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.
Avatar billede vgaard Nybegynder
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
Avatar billede bumle90 Nybegynder
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
Avatar billede bumle90 Nybegynder
04. september 2001 - 16:54 #7
Skal classen være tilknyttet et projekt før man kan lave den til en jar file?
Avatar billede bumle90 Nybegynder
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
Avatar billede trolle Nybegynder
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.
Avatar billede rickypriv Nybegynder
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
Avatar billede vgaard Nybegynder
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.
Avatar billede disky Nybegynder
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
Avatar billede logical Nybegynder
06. september 2001 - 08:53 #13
Ekstra hjælp kan du evt. finde her:

http://www.eksperten.dk/spm/95326
Avatar billede bumle90 Nybegynder
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?
Avatar billede rickypriv Nybegynder
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. :)
Avatar billede logical Nybegynder
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
Avatar billede logical Nybegynder
13. september 2001 - 15:04 #17
Hvad, spilder man sin tid eller har I fået det til at virke?
Avatar billede bumle90 Nybegynder
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester