Avatar billede nicklasb Nybegynder
05. november 2008 - 11:50 Der er 2 kommentarer og
1 løsning

Hente billeder og andre filer fra JAR-fil i Java-kode

Jeg har et Java projekt, som jeg bygger til en JAR-fil, ved brug af ANT.
Jeg har lavet et target 'package', hvor jeg efter at have kompileret koden samler min JAR-fil. Dette target ser ud som følger:

    <target name="package" depends="compile">
        <jar jarfile="${dist}/result.jar" basedir="${build}">
            <fileset dir="./src">
                <include name="**/*.ttf"/>
                <include name="**/*.gif"/>
            </fileset>
        </jar>
    </target>

I min projekt bruger jeg nogle skrifttyper og nogle billeder (GIF). ANT pakker fint nok disse filer og ligger dem i roden af min JAR-fil. Når jeg kører en klasse har den dog problemer med at hente disse ressourcer.

I min Java -kode bruger jeg eksempelvis følgende to linjer, når TTF-filen ligger i roden af projektet:

    File file = new File("candara.ttf");
    font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream(file));

Jeg har søgt om andre skulle have samme problem og fandt en løsning alá:

    InputStream in = Layout.class.getResourceAsStream("candara.ttf");
    font = Font.createFont(Font.TRUETYPE_FONT, in);
    in.close();

hvor Layout er klassen, hvorfra koden kaldes - det virker dog heller ikke.
Avatar billede arne_v Ekspert
05. november 2008 - 12:46 #1
Start med at check struktur af jar med:

jar tvf foobar.jar

og se om filen er der og om den ligger i roden.

Derefter prøver du med:

InputStream in = Layout.class.getResourceAsStream("candara.ttf");
InputStream in = Layout.class.getResourceAsStream("/candara.ttf");
InputStream in = Layout.class.getClassLoader().getResourceAsStream("candara.ttf");
InputStream in = Layout.class.getClassLoader().getResourceAsStream("/candara.ttf");
Avatar billede nicklasb Nybegynder
05. november 2008 - 13:24 #2
Synes snart jeg har prøvet alt - men tænk engang; både din anden og tredje løsning virkede :D

Tak for hjælpen.
Avatar billede arne_v Ekspert
05. november 2008 - 14:17 #3
Jeg smider et svar så.
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

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