Avatar billede monken Nybegynder
25. november 2002 - 09:25 Der er 11 kommentarer og
1 løsning

Applets og læsning af filer

Har et applet som gerne skulle hente nogle billeder ind, det foregår imidlertid ikke i den klasse som nedarver fra Applet ( i mit tilfælde underklassen JApplet).

Hvis man henter billedet direkte ind, i f.eks et ImageIcon laver appletten en java.io.filepermission istedet for at loade.

Ok, tænkte jeg, jeg bruger da bare java.applet.Applet's indbyggede getImage(getCodeBase(),mitbilledesnavn) men kald af disse forårsager følgende(ja de bliver ikke erklæret static eller kaldt fra en static metode i MIT program)

non-static method getImage(java.net.URL,java.lang.String) cannot be referenced from a static context
    img = new ImageIcon(Applet.getImage(Applet.getCodeBase(),"image.gif"));

og samme fejl for codebase linien før.

Mit spørgsmål er så... hvilke metoder er der til at hente et billede ind uden permission errors hvis man ikke skal bruge Applet's indbyggede - og hvis man nu ER nødt til at bruge de indbyggede, hvordan kommer man så udenom den der static fejl - jeg ved der er nogen derude der har siddet med samme problem :)

muligvis lidt bonuspoint hvis i svarer på metoder udenom Applet's indbyggede.

mvh

undertegnede
Avatar billede di8leva Nybegynder
25. november 2002 - 10:04 #1
du kan prova att lægga dina billeder i samma JAR-fil som applet:en og bruge:
img = new ImageIcon(ImageIcon.class.getResource("image.gif")); //hvis image.gif ligger i roden af din JAR-fil
Avatar billede monken Nybegynder
25. november 2002 - 11:44 #2
det virker ikke - den laver tilsyneladende bare nogle exceptions med getResource
Avatar billede monken Nybegynder
25. november 2002 - 11:47 #3
såvidt jeg kan se er getResource af typen:
public java.net.URL getResource(String name) {
det afhjælper imidlertid ikke problemet med at appletten ikke må læse mine billed filer. Any ideas out there ?
Avatar billede monken Nybegynder
26. november 2002 - 01:03 #4
der må da være nogen som kender til det ?
java.security.AccessControlException ( java.io.filepermission... blablabla 
når man starter applet

(imageicon konstrueres med filnavn som argument og virker iøvrigt fint hvis programmet køres i en Frame.)
Avatar billede gybel Nybegynder
26. november 2002 - 12:54 #5
Det skyldes at din applet ikke må læse/skrive til filer på klienten, heldigvis, medmindre appletten har et certifikat som klienten har godkendt.
Det skyldes din java.io.FilePermissionException
Avatar billede monken Nybegynder
26. november 2002 - 16:37 #6
Det er fuldstændig korrekt, men der er imidlertid en løsning på dette problem, en applet kan jo normalt læse billeder fra det sted den bliver kørt fra (jvf. getImage(URL,String_med_imagenavn) som er en metode i java.applet.Applet).

http://java.sun.com/j2se/1.4.1/docs/api/java/applet/Applet.html#getImage(java.net.URL,%20java.lang.String)

Meningen er heller ikke at den skal læse filer på klienten men at den skal læse billederne fra serveren den bliver kørt fra, det virker imidlertid ikke hvis man refererer direkte til filnavnet. Genprøver di8levas foreslag senere idag igen, uploadede ikke til en remote server sidste gang men testede kun lokalt.

/monken
Avatar billede gybel Nybegynder
26. november 2002 - 18:02 #7
Ok..

Hvordan er dine tilladelser til dit image?
hvem har rettigheder til den?? Hvis den ligger på et fler brugersystem.
Avatar billede monken Nybegynder
26. november 2002 - 19:08 #8
Løste problemet ved at give en direkte url til filen som argument i mit ImageIcon - class.getResource returnerede null istedet for en url (som der står den returnerer ifølge api docs), så jeg prøvede at specificere url'en og derved kom der ikke en java.io.filepermission.
Avatar billede monken Nybegynder
26. november 2002 - 19:33 #9
Løsning:
new ImageIcon(this.getClass().getResource("back.jpg")); 
hvis man refererer til class filen direkte returnerer den null men hvis man kalder den pågældende instans' getclass og _derefter_ den metode som di8leva skrev virker det. Point er tildelt.

mvh monken
Avatar billede monken Nybegynder
26. november 2002 - 19:34 #10
hehe, jeg så ikke lige at han ikke havde skrevet det som et svar - ingen point kan tildeles før der kommer en kommentar i form af et "svar" :)
Avatar billede di8leva Nybegynder
27. november 2002 - 11:19 #11
fint att det virker... =)
Avatar billede gybel Nybegynder
29. november 2002 - 11:53 #12
Hey monken... en mail adresse???

Gybel
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