Avatar billede jsl Nybegynder
26. juli 2005 - 12:36 Der er 8 kommentarer og
1 løsning

Sti til db (java)

Jeg har i mit program en lang sti til databasen der hedder noget med c:/.../.../.../db/db.jds. Jeg har forsøgt at afkorte den til db/db.jds, for at bedre kunne flytte mappen med prgrammet og databasen, men så kan programmet ikke finde databasen. Hvorfor?
Strukturen er her skitseret:

|--Databaseapp.exe
|--db
    |--db.jds
Avatar billede arne_v Ekspert
26. juli 2005 - 12:53 #1
gæt:

current dir != dir hvor program ligger
Avatar billede jsl Nybegynder
26. juli 2005 - 21:31 #2
Hvad mener du med det? Hvordan laver man det sådan, at programmet og databasen kan flyttes rundt med, uden at tage hensyn til det beskrevne?
Avatar billede arne_v Ekspert
26. juli 2005 - 21:44 #3
Du kan godt have current dir som C:\ og køre et program som
ligger i C:\sw og så vil db\db.jds blive opfattet som C:\db\db.jds
fremfor det rigtige c:\sw\db\db.jds
Avatar billede arne_v Ekspert
26. juli 2005 - 21:44 #4
Du kan hente current dir med:

System.getProperty("user.dir)
Avatar billede arne_v Ekspert
26. juli 2005 - 21:45 #5
For at finde ud af hvor din applikation ligger skal du ud og
snage i classloaderen.

Jeg har et eksempel.
Avatar billede arne_v Ekspert
26. juli 2005 - 21:45 #6
import java.util.*;

public class GetPathExt {
    private static String getPath(Class cls) {
        String cn = cls.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 = GetPathExt.class.getClassLoader().getResource(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(GetPathExt.getPath(GetPathExt.class));
    }
}
Avatar billede arne_v Ekspert
26. juli 2005 - 21:46 #7
Du kalder GetPathExt.getPath med den class som du vil vide hvor kommer fra
Avatar billede jsl Nybegynder
15. august 2005 - 20:09 #8
arne_v, giv lige et svar, så du kan få point.
Avatar billede arne_v Ekspert
15. august 2005 - 20:10 #9
kommer her
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