Avatar billede brjali Nybegynder
05. august 2003 - 21:54 Der er 14 kommentarer og
1 løsning

Hvordan laver mand en manifest fil?

Jeg har en klasse som hedder RunMe og den indeholder den eneste main metode i programmet. hvordan kan jeg lave en jar fil som kan køres på andre computere?
Programmet skriver til en fil, er der nogle krav for at det skal indgå i mainifest filen?
Avatar billede arne_v Ekspert
05. august 2003 - 21:59 #1
Du laver en flad tekst fil med følgende indhold:

Main-Class: RunMe

og laver din jar fil med:

jar cvmf navn-på-manifest-fil navn-på-jar-fil RunMe.class andre-class-filer
Avatar billede arne_v Ekspert
05. august 2003 - 22:01 #2
Avatar billede casualty Nybegynder
05. august 2003 - 22:07 #3
1. lav en mappe
2. put package fil med alle classfiler i mappen
3. lav en ny mappe i mappen med navnet "META-INF"
4. I meta mappen laves en tekstfil med navnet MANIFEST.mf

5. I manifest filen skrives:

    Manifest-Version: 1.0
    Main-Class: package1.Frame1
   
   
6. Det er vigtigt at der er et linieskift efter sidste linie i manifest filen...
7. Endeligt skal det hele zippes evt. med winzip til en fil med navnet "etellerandet.jar"
Avatar billede brjali Nybegynder
05. august 2003 - 22:17 #4
casualty - det virker fint men i programmet bruger jeg en tekst fil. når jeg kører programmet så ender denne fil i samme mappe som jeg har installeret java. hvad kan jeg gøre med det?
Avatar billede arne_v Ekspert
05. august 2003 - 22:22 #5
Du kan styre plaveringen af en fil på flere måde.

Det nemmeste (men absolut ikke kønneste) er at bruge en absolut sti.

Lidt mere fleksibelt er at ligge den fil relativt i forhold til
home dir.

System.getProperty("home.dir") returnerer home dir.
Avatar billede brjali Nybegynder
05. august 2003 - 22:26 #6
vil det virke når jeg pakker det ind i jar? kan mand ikke bare sige at den ligger i den samme mappe som programmet?
Avatar billede arne_v Ekspert
05. august 2003 - 22:35 #7
Skal du skrive til eller læse fra den fil ?

Hvis du skriver så skal den nok ligge udenfor jar-file typisk
i home dir i et directory med navn efter din applikation.

Du kan godt læse en fil der ligger inde i din jar-fil.
Avatar billede brjali Nybegynder
05. august 2003 - 22:48 #8
Jeg får den ikke til at læse filen. klassen implementerer Serializable og det følgende er det som jeg bruger til at skrive ud i filen:

FileOutputStream out = new FileOutputStream("fil.txt");
                ObjectOutputStream outobj = new ObjectOutputStream(out);
                outobj.writeObject(obj);
Avatar billede arne_v Ekspert
05. august 2003 - 22:55 #9
Jeg er en lille smule usikker på præcis hvad scenariet er.

Hvornår skriver du filen og hvornår læser du den og hvilken fejl får du ?
Avatar billede brjali Nybegynder
05. august 2003 - 23:02 #10
jeg har en hel masse data som jeg skal bruge i programmet men jeg gidder ikke at skrive det ind hver gang jeg kører programmet, så jeg skriver denne date ind en gang og gemer den i fil, så når jeg skal bruge dataen så opner jeg filen og henter dataen. Mit problem er at jeg kan godt faa det til at virke, selvom compileren lægger datafilen i en anden mappe en den som programmet er i, nemlig mappen som jeg installerete java i. Men, når jeg har pakket programmet og datafilen i en jar fil så vil programmet ikke finde filen.
Avatar billede arne_v Ekspert
05. august 2003 - 23:04 #11
Du skal ikke åbne filen med FileInputStream når den ligger i en jar-fil.

Det er der en speciel metode til.
Avatar billede arne_v Ekspert
05. august 2003 - 23:10 #12
getClass().getResource("relativ sti til fil").openStream()
Avatar billede arne_v Ekspert
05. august 2003 - 23:11 #13
Og den virker både fra fil på disk og fra fil i jar-fil !

Så den er anbefalelsesværdig i mange sammenhænge.
Avatar billede brjali Nybegynder
05. august 2003 - 23:36 #14
Tak for det. det ville være fin hvis du kan sætte det i kontekst for mig, fx. hvis du har en objekt o, hvordan ville du så skrive den ud til filen.
Avatar billede arne_v Ekspert
06. august 2003 - 08:32 #15
På præcis samme måde som du gør.

Du bruget FileOutputStream og ObjectOutputStream til at skrive den med som
fil.

Du bruger getResource().openStream() og ObjectInputStream til at læse
den som fil med.

Så pakker du det hele i en jar og flytter den.

Du kan stadig bruge getResource().openStream() og ObjectInputStream til at læse
den som fil med.
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