reading image files from applet -- newbie question

E

Ed

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?
 
C

Chris Head

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ed wrote:
[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
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)

iD8DBQFC5yyK6ZGQ8LKA8nwRArA3AJ0e5z0n+G280ZaN9UH4RObazx1RIQCghA01
YrZ2d36IS+MeUr12GyoXMjY=
=Tjj6
-----END PGP SIGNATURE-----
 
E

Ed

Thanks Chris. I wound up changing my implementation to use ImageIcons,
which I loaded using getResourceAsStream. That worked like a charm.
 
E

Ed

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top