I'm fairly new to Java, trying to make my first significant Japplet. It's a
small BlackJack game with a swing interface. I'm trying to display GIF
images of the card faces, but I can't get the GIF images to load. I keep
getting security exceptions saying the applet doesn't have read access.
I've got the class files and images packaged in a JAR file. The image files
are stored in a folder named "cardfile". Here's the java code I use to read
the images:
Toolkit kit = Toolkit.getDefaultToolkit();
String blankCard = "cardfile/blank.GIF";
Image blankCardImage = kit.getImage(blankCard);
I launch the applet with this HTML from the same directory as the JAR file:
<applet code="Hello1.class" archive="Hello1.jar" width="800"
height="600"> </applet>
I can run my applet from AppletViewer within my IDE (Netbeans), but I can't
run it from disk or my webserver. Here are the runtime exceptions I keep
getting:
java.security.AccessControlException: access denied
(java.io.FilePermission cardfile/blank.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 GUItype.<init>(GUItype.java:61)
at Hello1.init(Hello1.java:66)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-Hello1.class"
java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
at sun.plugin.AppletViewer.showAppletException(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Like I said, I'm new to Java, but best I can tell it says I don't have file
permission to read the GIF files. I thought that Applets could read files
stored within the same codebase that they were launched from, without any
special security settings. When I remove the attempts to read the images,
the applet works fine. Any ideas?
Chris Head - 27 Jul 2005 07:41 GMT
[snip]
> Toolkit kit = Toolkit.getDefaultToolkit();
> String blankCard = "cardfile/blank.GIF";
> Image blankCardImage = kit.getImage(blankCard);
[snip]
Hello,
Try using Applet.getImage() instead of Toolkit.getImage(). There may be
a difference. In fact, you can probably just replace the above three
lines with this:
Image blankCardImage = getImage(getCodeBase(), "cardfile/blank.GIF");
Please note that this is untested.
Good luck,
Chris
Ed - 28 Jul 2005 05:06 GMT
Thanks Chris. I wound up changing my implementation to use ImageIcons,
which I loaded using getResourceAsStream. That worked like a charm.
> -----BEGIN PGP SIGNED MESSAGE-----
> Hello,
> Try using Applet.getImage() instead of Toolkit.getImage(). There may be
[quoted text clipped - 7 lines]
> Good luck,
> Chris
Andrew Thompson - 28 Jul 2005 05:23 GMT
> I'm fairly new to Java, ..
Initially I avoided making any comment on this thread,
but since you are a self-professed multi-poster..
<http://groups.google.com.au/group/comp.lang.java.help/msg/7ef76b7149c0b30f>
..you can expect to see a lot more of me, and perhaps
a lot less of 'answers'.
HTH (the other members of the groups)

Signature
Andrew Thompson
physci.org 1point1c.org javasaver.com lensescapes.com athompson.info
Beats A Hard Kick In The Face
Ed - 28 Jul 2005 15:13 GMT
Oooo, the internet police.
There is a difference between cross-posting and multi-posting. Judicious
use of the latter should bother nobody, except the odd usenet pedant.
>> I'm fairly new to Java, ..
>
[quoted text clipped - 5 lines]
>
> HTH (the other members of the groups)