Avatar billede margitbork Nybegynder
29. september 2004 - 10:49 Der er 11 kommentarer og
1 løsning

kan man læse en environment variabel i en java klasse?

Jeg vil gerne kunne læse en environment variabel fra min javaklasse. Kan man det ?
Avatar billede arne_v Ekspert
29. september 2004 - 11:49 #1
Nej.

De fjernede den mulighed i Java 1.2 eller deromkring.

Brug:

-Dnoget=%NOGET%

i opstart.

Hvis du absolut skal bruge det så er det nemt at lave med JNI.
Avatar billede margitbork Nybegynder
29. september 2004 - 12:31 #2
Jeg tænkte det nok. Jeg har lavet en lille batfil der læser min systemvariabel, og så læser jeg den ved at kalde batfilen således:
(ResourceLocator kigger efter filer af dette navn i classpath)

    private static String retrieveMDTOOL()
    {
        String mdtool = null;
        String getMDTOOLbat = "getMDTOOL.bat";
        URL batlocation;
        try {
        batlocation = ResourceLocator.getResourceAsURL(getMDTOOLbat);
            String cmdline = batlocation.getFile();
            System.out.println("getMDTOOL.bat location="+cmdline);
            if(cmdline.startsWith("/"))
                cmdline = cmdline.substring(1);
        String line;
        Process p = Runtime.getRuntime().exec(cmdline);
        BufferedReader input =  new BufferedReader(new InputStreamReader(p.getInputStream()));

        while ((line = input.readLine()) != null)
        {
          System.out.println("batfil linie: "+line);
            if(line.startsWith("MDTOOL="))
            {
                //
                mdtool = line.substring(line.indexOf("MDTOOL=")+7).trim();
            }
        }
        input.close();
        }
        catch (Exception err) {
        err.printStackTrace();
        }
        System.out.println("MDTOOL = "+mdtool);
        return mdtool;

    }
Avatar billede arne_v Ekspert
29. september 2004 - 13:37 #3
Se det kunne man også.

Men det er nok en lidt dyr måde.
Avatar billede margitbork Nybegynder
29. september 2004 - 13:49 #4
Hvad er det du mener jeg kan gøre ??
Avatar billede arne_v Ekspert
29. september 2004 - 13:51 #5
Enten sætte dem i opstart med:

java -DMDTOOL=%MDTOOL% ...

så du kan hente den med System.getProperty("MDTOOL").

Eller lave en JNI løsning (C++).

Men måske er din løsning OK. Det er jo ikke noget der skal laves ret mange
gange formentligt.
Avatar billede margitbork Nybegynder
29. september 2004 - 14:40 #6
Jeg tror også holder mig til min egen løsning. Så behøver dem der skal bruge mit lille api heller ikke at angive parameteren inden deres egen applikation startes..
Det eneste de behøver er at have min batfil i classpath, samt at have sat systemparameteren på maskinen
Avatar billede Slettet bruger
29. september 2004 - 23:54 #7
Man kunne vel også bruge Properties klassen og lave en fil som de kunne ændre i efter behov.
Avatar billede margitbork Nybegynder
30. september 2004 - 08:14 #8
Hvis jeg bruger properties filen skal de skrive i den hvad de har sat parameteren til, Med en batfil kan jeg selv læse den, derfor valgte jeg at gøre det på den måde, så er der ikke to steder det ikke rettes flere steder hvis de vælger at ændre værdien af parameteren
Avatar billede arne_v Ekspert
31. oktober 2004 - 00:13 #9
Foreslå at opgradere til Java 1.5 (også kaldet 5.0) !

Jeg fik lige nærlæst lidt release notes.

Den har genaktiveret System.getenv("navn") !
Avatar billede margitbork Nybegynder
01. november 2004 - 08:27 #10
Interessant, tak for tippet. Et 1.5 gemmentestet og klar til brug ??
Avatar billede arne_v Ekspert
01. november 2004 - 08:29 #11
Det er en helt normal version er er ude nu (altså ikke en beta).

Den er meget ny og er næppe så veltestet som 1.4.2 og 1.4.1.

Der er iøvrigt mange andre gode ting i 1.5.
Avatar billede margitbork Nybegynder
16. august 2006 - 10:50 #12
lukker
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