Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

applet security problem

1 view
Skip to first unread message

Sarah Grün

unread,
Mar 6, 2001, 3:10:10 AM3/6/01
to
hallo!
ich habe ein applet mit java 1.3 geschrieben, das mit einer gif-grafik arbeitet.
Ich habe die Bilddatei und die Javaclass-datei auf den server geladen, und jetzt
kommt beim Aufruf:


Java(TM) Plug-In: Version 1.3.1
Verwendung der JRE-Version 1.3.1-beta Java HotSpot(TM) Client VM
Home-Verzeichnis des Benutzers = C:\WINDOWS

...
java.security.AccessControlException: access denied (java.io.FilePermission tttt.
gif read)

at java.security.AccessControlContext.checkPermission(Unknown
Source)

at java.security.AccessController.checkPermission(Unknown Source)

at
java.lang.SecurityManager.checkPermission(Unknown Source)

at java.lang.
SecurityManager.checkRead(Unknown Source)

at sun.awt.SunToolkit.
getImageFromHash(Unknown Source)

at sun.awt.SunToolkit.getImage(Unknown
Source)

at java.lang.Thread.run(Unknown Source)
...


Ich habe schon mit der java.policy-Datei herumprobiert, aber das Applet liegt ja
nicht lokal, sondern auf dem Server, ebenso wie die zu ladende Datei. Und als jar
will ich das nicht umbauen, ist nämlich nur ein gif.
--
_____________________________________________________________
NewsGroups Suchen, lesen, schreiben mit http://netnews.web.de

Karl Huber

unread,
Mar 6, 2001, 4:56:15 AM3/6/01
to Sarah Grün
Hallo *,

wie liest Du denn die Grafik-Datei bzw. genauer mit welchem Protokoll ?
Etwa über file (Das legt zumindest die fehlende FilePermission nahe ?
Wenn Das Bild auf dem Server liegt solltest Du es auch mit
http://.../tttt.gif holen ...

Gruß

-Karl

"Sarah Grün" wrote:
>
> hallo!
> ich habe ein applet mit java 1.3 geschrieben, das mit einer gif-grafik arbeitet.
> Ich habe die Bilddatei und die Javaclass-datei auf den server geladen, und jetzt
> kommt beim Aufruf:
>
> Java(TM) Plug-In: Version 1.3.1
> Verwendung der JRE-Version 1.3.1-beta Java HotSpot(TM) Client VM
> Home-Verzeichnis des Benutzers = C:\WINDOWS
>
> ...
> java.security.AccessControlException: access denied (java.io.FilePermission tttt.
> gif read)

- snip

stefan

unread,
Mar 6, 2001, 5:26:52 AM3/6/01
to
hallo sarah!
probier es doch mal mit folgendem code aus:

java.net.URL picURL = new java.net.URL(getCodeBase().toString() +
"Images/");
Icon icSave = new javax.swing.ImageIcon(getImage(picURL, "speichern.gif"));

(Images ist mein Subverzeichnis für die Bilder)

wenn du immer noch zugriffsprobleme bekommst, dann musst du dich nochmal
melden, da du dann noch einige änderungen am java.policy-file vornehmen
musst

gruss
stefan

Sarah Grün <ttt...@unicum.de> schrieb in im Newsbeitrag:
3aa4a972$1...@netnews.web.de...

Sarah Grün

unread,
Mar 6, 2001, 4:30:25 AM3/6/01
to
Hallo,
danke für die schnelle Antwort. Ich verwende einfach:


Toolkit.getDefaultToolkit().getImage("ttt.gif");
bzw.
ImageIcon bild=new ImageIcon("ttt.gif");


und wenn ich jetzt den absoluten Pfadnamen verwende, kommt genau derselbe Fehler.
Im Appletviewer geht das alles problemlos.

--

Sarah Grün

unread,
Mar 6, 2001, 4:53:11 AM3/6/01
to
Hallo!


also jetzt steht im Konstruktor meines Programms:


java.net.URL picURL = new java.net.URL(java.applet.Applet.getCodeBase().
toString());


Icon icSave = new javax.swing.ImageIcon(java.applet.Applet.getImage(picURL, "ttt.
gif"));


setIconImage(icSave);

und dann gibt es die Fehler:

t.java:22: non-static method getCodeBase() cannot be referenced from a static
context


t.java:23: non-static method getImage(java.net.URL,java.lang.String) cannot be
referenced from a static context


t.java:24: setIconImage(java.awt.Image) in java.awt.Frame cannot be applied to
(javax.swing.Icon)

Ich stehe glaube ich im Moment total auf der Leitung und mach mal Mittagspause.
Kannst du mir noch mal helfen?


"stefan" <stef...@hotmail.com> wrote:
>hallo sarah!
>probier es doch mal mit folgendem code aus:
>
>java.net.URL picURL = new java.net.URL(getCodeBase().toString() +
>"Images/");
>Icon icSave = new javax.swing.ImageIcon(getImage(picURL, "speichern.gif"));
>
>(Images ist mein Subverzeichnis für die Bilder)
>
>wenn du immer noch zugriffsprobleme bekommst, dann musst du dich nochmal
>melden, da du dann noch einige änderungen am java.policy-file vornehmen
>musst
>
>gruss
>stefan
>
>

--

stefan

unread,
Mar 6, 2001, 6:11:06 AM3/6/01
to
aehm, ich habe da mal eine frage, du sagst in deinem konstruktor deiner
klasse steht das jetzt.
von welcher klasse erbt deine klasse???
public meineKlasse extends applet (bzw. japplet)????
und dann würde ich das auch nicht in den konstruktor deiner klasse
schreiben, sondern in die init-Methode, die du von der applet-klasse erbst
und dann überschreiben solltest

hast du irgendwie icq oder so, damit man sich mal ein bisschen
kommunikativer über das problem auslassen kann??


Sarah Grün <ttt...@unicum.de> schrieb in im Newsbeitrag:

3aa4c197$1...@netnews.web.de...

Karl Huber

unread,
Mar 6, 2001, 6:24:53 AM3/6/01
to Sarah Grün

"Sarah Grün" wrote:
>
> Hallo,
> danke für die schnelle Antwort. Ich verwende einfach:
>
> Toolkit.getDefaultToolkit().getImage("ttt.gif");
> bzw.
> ImageIcon bild=new ImageIcon("ttt.gif");
>
> und wenn ich jetzt den absoluten Pfadnamen verwende, kommt genau derselbe Fehler.
> Im Appletviewer geht das alles problemlos.
>

versuchs doch einfach mal mit
Toolkit.getDefaultToolkit().getImage("http://deinhostname/derpfadzumgifbild/ttt.gif");

wenn das tttt.gif im gleichen Verzeichnis wie die Applet-Klasse liegt,
dann kannst Du auch getCodeBase() benutzen um die URL zum bild
rauszubekommen. Ach ja: Wir reden hier von einem Applet - Das heißt
deine Klasse erbt doch von (J)Applet oder ??????

- Karl

Sarah Grün

unread,
Mar 6, 2001, 5:38:48 AM3/6/01
to
public class haupt extends JApplet
{
public void init()
{
JFrame f=new ttt();
f.size(....);
f.setVisible;
}
}

und dann kommt die entscheidende Klasse, die also von JFrame erbt:


public class ttt extends JFrame implements *listener
{
public ttt{


und hier steht dann der Imageladeversuch.


Ich weiß nicht, ob das sinnvoll ist, wie ich das hier zusammengebaut habe, es
war erst eine Applikation mit public static void main.... und dann habe ich
einfach main durch init ersetzt und noch ein extends JApplet dazugefügt, und
schon war es ein Applet.


Habe leider keine Chatsoftware im Moment installiert.

Sarah Grün

unread,
Mar 6, 2001, 5:42:15 AM3/6/01
to
Hallo!
wie gesagt, ich habe den absoluten Pfadnamen eingesetzt. Gleiche Fehlermeldung.
GetCodeBase tut nicht, da ich von JFrame erbe und statisch im Konstruktor bin.
(siehe Thread nebenan).

--

stefan

unread,
Mar 6, 2001, 6:42:49 AM3/6/01
to
siehst du, und das ist gerade der kleine entscheidende fehler
du musst meinen code in deine applet-klasse einbauen und übergibst beim
instanzieren deiner frame-klasse halt das icon mit (dann müßtest du dir halt
einen neuen konsturktor anlegen für die frame klasse

public class haupt extends JApplet{

public void init(){
try{
hier natürlich noch meinen bildlademodus reinsetzen
}
catch(java.net.MalformedURLException murle){}
JFrame f=new ttt(icon);
..........................
}

-----------------------------
private Icon icon;
.....
public ttt(Icon icon){
this.icon = icon;
}

und dann sollte das funzen


Sarah Grün <ttt...@unicum.de> schrieb in im Newsbeitrag:

3aa4cc48$1...@netnews.web.de...

Sarah Grün

unread,
Mar 6, 2001, 11:28:40 AM3/6/01
to
Hallo!
Super. Es geht. Darauf hätte ich wohl selbst kommen müssen. DANKE


Sarah

"stefan" <stef...@hotmail.com> wrote:
>siehst du, und das ist gerade der kleine entscheidende fehler
>du musst meinen code in deine applet-klasse einbauen und übergibst beim
>instanzieren deiner frame-klasse halt das icon mit (dann müßtest du dir halt
>einen neuen konsturktor anlegen für die frame klasse
>
>public class haupt extends JApplet{
>
>public void init(){
>try{
> hier natürlich noch meinen bildlademodus reinsetzen
>}
> catch(java.net.MalformedURLException murle){}
> JFrame f=new ttt(icon);

>...........................
>}
>
>-----------------------------
>private Icon icon;
>......


>public ttt(Icon icon){
> this.icon = icon;
>}
>
>und dann sollte das funzen

--

stefan

unread,
Mar 7, 2001, 3:56:16 AM3/7/01
to
keine ursache! dafür ist die newsgroup ja da! :-)


Sarah Grün <ttt...@unicum.de> schrieb in im Newsbeitrag:

3aa51e48$1...@netnews.web.de...

0 new messages