Avatar billede cybermazedk Nybegynder
03. oktober 2002 - 12:12 Der er 9 kommentarer og
1 løsning

Permission til at læse noget i jar fil.

Jeg har et problem, da jeg ikke kender så meget til applet'er.

Jeg har lavet en applet, der er pakket som en jar fil. Det virker fint. Jeg kan starte applet'en og det hele.

Men nu er det sådan, at jeg har gemt en billedefil i jar filen. Et lille ikon. Jeg får en Permission denided (File.io.InputStream exception). hvis jeg i konstruktøren til ImageIcon angiver stien til filen new ImageIcon("pics/net.gif").

Er der ikke en nem måde, hvorpå jeg kan få tilladelse til at indlæse billedet fra jar filen ???

Jeg ønsker desuden at kunne indlæse en tekststreng fra endnu en fil i jar filen. Kan det lade sig gøre ???

Jeg skal IKKE læse noget fra filer der er uden for jar filen.

Da jeg håber på et hurtigt svar, er der 100 point at hente.
Avatar billede disky Nybegynder
03. oktober 2002 - 12:19 #1
Sådanne her:

Image image = new Image(new URL(getCodeBase(),"mitgrafik.gif"));
Avatar billede disky Nybegynder
03. oktober 2002 - 12:22 #2
Fidusen er du fetcher dit image fra en URL som er din jar file + navn og path til dit image.
Avatar billede Slettet bruger
03. oktober 2002 - 12:27 #3
new ImageIcon( this.getClass().getRessource("pics/net.gif") )
Avatar billede disky Nybegynder
03. oktober 2002 - 12:37 #4
Eller:
ImageIcon image = new ImageIcon(new URL(getCodeBase(),"mitgrafik.gif"));

I det tilfælde hvor du ønsker et ImageIcon direkte.
Avatar billede cybermazedk Nybegynder
03. oktober 2002 - 12:59 #5
Ok, jeg prøver lige lidt senere (kan ikke lige nu) ...
Og virker det, så siger jeg på forhånd, ellers skriver jeg igen, hvis jeg ikke kan få det til at fungere ...
Avatar billede cybermazedk Nybegynder
03. oktober 2002 - 15:21 #6
Jeg kan kun sige, svarene dur ikke ...

Prøvede først "ImageIcon image = new ImageIcon(new URL(getCodeBase(),"pics/net.gif"));" ideen. Men det dur ikke. Får en NullPointerException
fra ImageIcon, når det skal tegnes. Ergo peger image ikke på noget. har brugt getPath, på url'en til at vise den sti url'en peger på.

Hvis vi siger at min jar fil ligger i e:\klienttest\ og bliver kørt derfra med en html fil, giver ovenstående linie følgende sti:" e:\klienttest\pics\net.gif". Og det er overhovedet ikke der billeder ligger, men derimod i:"e:\klienttest\klient.jar\pics\net.gif". Jeg forsøgte at ændre linien til:"Image image = new Image(new URL(getCodeBase(),"klienttest.jar/pics/net.gif"));"

getPath viser den rigtige sti (rent forståelsesmæssigt), altså den jeg skrev før, men stadig NullPointerException.

Så prøvede jeg Its forslag:
ImageIcon image = new ImageIcon(new URL(getCodeBase(),"pics/net.gif"));

Og gæt lige engang hvad der skete ???? NullPointerException ... hmmmmmmm ... Det værste er, at jeg med denne metode ikke umiddelbart har mulighed for at se, hvor den forsøger at hente billedet henne ...

Har jeg gjort noget galt mht. de ovennævnte forsøg ??? Hvis ja, hvordan gør jeg det så rigtigt ???

Ellers er jeg stadig åben overfor forslag ...
Avatar billede disky Nybegynder
03. oktober 2002 - 21:39 #7
Brug denne her:
protected Image getImageFromJAR(String fileName){
    if( fileName == null ) return null;

    Image image = null;
    byte[] thanksToNetscape = null;
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    InputStream in = getClass().getResourceAsStream(fileName);

    try{
      int length = in.available();
      thanksToNetscape = new byte[length];
      in.read( thanksToNetscape );
      image = toolkit.createImage( thanksToNetscape );
    }
    catch(Exception exc){
      System.out.println( exc +" getting resource " +fileName );
      return null;
    }
    return image;
}



Den kommer fra denne side og virker.
http://www.javaworld.com/javaworld/jw-07-1998/jw-07-jar-p2.html
Avatar billede cybermazedk Nybegynder
04. oktober 2002 - 08:54 #8
Ok, kigger på det ...
Avatar billede cybermazedk Nybegynder
04. oktober 2002 - 11:04 #9
Fint svar disky. DET virkede ... Her er dine point ...
Avatar billede disky Nybegynder
04. oktober 2002 - 12:15 #10
Det glæder mig det virkede :)
Og mange tak og god weekend :)
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