I made a java game that saves the high score in a file, but I am having trouble giving the program enough permissions for it to work under appletviewer.
It seems that appletviewer is ignoring my policy file.
I have Game.java compiled into Game.class, and Game.html loads and runs the applet.  In the same directory as these, I have a policy file named policy with the following contents (made with policytool).
grant codeBase "file:///mypath/Game.html" {
  permission java.security.AllPermission;
};
Then appletviewer supposedly lets you specify a policy file like this:
appletviewer -J-Djava.security.policy=policy /mypath/Game.html
But when I start the game this way, it can only read the highscore file, not write to it:
Exception in thread "Thread-5" java.security.AccessControlException:
                        access denied (java.io.FilePermission highscore write)
Furthermore, if I double-click in the Finder on a shell script containing just the one-line appletviewer command above, then it doesn't even have read permission:
Exception in thread "Thread-5" java.security.AccessControlException:
                        access denied (java.io.FilePermission highscore read)
One troubling sign is that if I give the name of a non-existent file instead of my policy file, then I get the same behavior, with no additional warnings or errors:
appletviewer -J-Djava.security.policy=notafile /mypath/Game.html
The game itself (apart from the high-score code) works fine in every case, and the high-score code is also working fine if I run the whole thing under Eclipse, even though Eclipse also runs it using appletviewer. Eclipse also makes a policy file much like the above one, which I also tried from the command line, but it still didn't work from the command line.
It seems that appletviewer is not looking at the policy file, although I am using the command exactly as shown in various tutorials such as http://docs.oracle.com/javase/tutorial/security/tour1/step3.html.
Why does appletviewer ignore my policy file?
 
                        
By using
you have not actually granted any additional permissions to the code in your class file.
You can try doing this instead:
This will grant
AllPermissionto all class and jar files in /mypath and its subfolders. The-character indicates that this permission applies to all class/jar files in that folder and recursively in all subfolders. If you want just one folder, you would use*instead.Full reference on how to specify the
codeBaseparameter is here: http://docs.oracle.com/javase/7/docs/technotes/guides/security/PolicyFiles.html#FileSyntax.