Avatar billede 4bendix Nybegynder
23. oktober 2004 - 19:07 Der er 13 kommentarer og
1 løsning

Reference til .properties fra .jar

Hej....
Jeg har en jar, jeg selv har lavet. Fra den jar-fil vil jeg gerne kunne referere til en .properties, der ligger i samme dir..
Hvordan kan jeg fange den fil uafhængig af hvor jeg står - drev osv ??
Tak for svar !
Avatar billede arne_v Ekspert
23. oktober 2004 - 19:09 #1
Ligger properties filen i samme dir som jar filen elle rligger den i selve jar filen ?
Avatar billede 4bendix Nybegynder
23. oktober 2004 - 19:16 #2
Den ligger bare i samme dir - og ikke i .jar filen
Avatar billede arne_v Ekspert
23. oktober 2004 - 19:17 #3
For det sidste:

Properties props = new Properties();
props.load(getClass().getResource().openStream());
Avatar billede arne_v Ekspert
23. oktober 2004 - 19:18 #4
Uf.

Så skal du finde den jar fil som din kode ligger i.

Det er lidt tricky. Men jeg har noget kode liggende.
Avatar billede arne_v Ekspert
23. oktober 2004 - 19:29 #5
Prøv og leg lidt med den her:

import java.util.*;
import java.io.*;

public class GetPath {
    private static String getPath() {
        String cn = GetPath.class.getName();
        StringTokenizer st = new StringTokenizer(cn,".");
        StringBuffer sb = new StringBuffer("");
        boolean first = true;
        while(st.hasMoreTokens()) {
            if(first) {
                first = false;
            } else {
                sb.append("/");
            }
            sb.append(st.nextToken());
        }
        sb.append(".class");
        String path = GetPath.class.getClassLoader().getSystemResource(sb.toString()).getPath();
        int ix = path.indexOf("!");
        if(ix >= 0) {
            path = path.substring(0, ix);
            int ix2 = path.lastIndexOf("/");
            return path.substring(6, ix2 + 1);
        } else {
            int ix2 = path.lastIndexOf("/");
            return path.substring(1, ix2 + 1);
        }
    }
    public static void main(String[] args) {
      System.out.println(getPath());
    }
}
Avatar billede 4bendix Nybegynder
23. oktober 2004 - 19:48 #6
Tak jeg prøver mig lidt frem, og vender tilbage (nok først i morgen aften)- tak
Avatar billede 4bendix Nybegynder
24. oktober 2004 - 21:40 #7
Mange tak Arne - godt at man kan kode sig ud af det...
Troede at der var en lille smart workaround til dette, men løsningen her er også helt super... tak for hjælp!
Poster du et svar?
Avatar billede arne_v Ekspert
24. oktober 2004 - 21:41 #8
svar
Avatar billede arne_v Ekspert
24. oktober 2004 - 21:43 #9
Desværre tror jeg at Java fædre og mødre forestillede sig at properies filen
skulle ligge inde i jar filen.

Det er som vist 23/10-2004 19:17:42 ret nemt.

Ude i virkelighedens verden er hele finessen med en properties fil at folk skal
selv kunne rette i den (også uden at vide hvordan man updater en jar fil !) og
så skal den ligge udenfor.
Avatar billede 4bendix Nybegynder
24. oktober 2004 - 21:54 #10
Lige præcis det var også det der var hensigten her :)
Avatar billede 4bendix Nybegynder
24. oktober 2004 - 22:25 #11
btw - path.indexOf("!") hvornår skulle den bliver andet end -1?
Avatar billede arne_v Ekspert
24. oktober 2004 - 22:27 #12
Fordi den returnerer værdier i formatet:

file:/C:/dir/test.jar!minpakke/MinKlasse.class
Avatar billede arne_v Ekspert
24. oktober 2004 - 22:27 #13
(for jar filer altså)
Avatar billede 4bendix Nybegynder
24. oktober 2004 - 22:30 #14
Fint - endnu engang tak for hjælp!
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