Go Back   CodingForums.com > :: Server side development > Java and JSP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 04-09-2012, 05:59 PM   PM User | #1
nanoashash
New to the CF scene

 
Join Date: Oct 2011
Posts: 8
Thanks: 0
Thanked 0 Times in 0 Posts
nanoashash is an unknown quantity at this point
Java applet project - java.security.AccessControlException: access denied

This program I wrote in java is a rock paper scissors game. Its done in a gui and suppose to run as an applet. I have been stuck on this problem for 2 days now. I can not figure out what is giving me the error. When I try to run this applet this is what I get.


Quote:
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "exitVM.0")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
at java.security.AccessController.checkPermission(AccessController.java:555)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkExit(SecurityManager.java:761)
at javax.swing.JFrame.setDefaultCloseOperation(JFrame.java:394)
at JRockPaperScissors.initializeComponent(JRockPaperScissors.java:115)
at JRockPaperScissors.<init>(JRockPaperScissors.java:31)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:795)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:724)
at sun.applet.AppletPanel.run(AppletPanel.java:378)
at java.lang.Thread.run(Thread.java:722)
My code works fine, but I guess it is doing something that applet is not liking. Here is the code to my game.

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
import javax.swing.JApplet;


/** rock paper scissors class */
public class JRockPaperScissors extends JApplet{
      	// Variables declaration
        private JLabel titleLbl;
	private JLabel selectionLbl;
	private JLabel resultsLbl;
	private JTextArea resultTextArea;
	private JButton rockBn;
	private JButton paperBn;
	private JButton scissorBn;
	private Container contentPane;
      private int cpu = 0;
      private int wins = 0;
      private int loses = 0;
      private int ties = 0;
      private final int CHOICE_MAX = 3;
      private final int ROCK = 0;
      private final int PAPER = 1;
      private final int SCISSORS = 2;
      private Random rand = new Random();
	// End of variables declaration
	
	public JRockPaperScissors(){
		initializeComponent();
	}

        /** initializing componets */
	private void initializeComponent()
	{
		titleLbl = new JLabel();
		selectionLbl = new JLabel();
		resultsLbl = new JLabel();
		resultTextArea = new JTextArea();
		rockBn = new JButton();
		paperBn = new JButton();
		scissorBn = new JButton();
		contentPane = getContentPane();

		//
		// titleLbl
		//
		titleLbl.setText("Rock, Paper, Scissors");
                titleLbl.setFont(new Font("Garrmond", Font.BOLD, 30));
		//
		// selectionLbl
		//
		selectionLbl.setText("Choose one");
                selectionLbl.setFont(new Font("Arial",Font.BOLD,14));
		//
		// resultsLbl
		//
		resultsLbl.setText("*****Results*****");
                selectionLbl.setFont(new Font("Arial",Font.BOLD,14));
		//
		// resultTextArea
		//
		resultTextArea.setOpaque(false);

                
		//
		// rockBn
		//
		rockBn.setText("Rock");
		rockBn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				rockBn_actionPerformed(e);
			}

		});
		//
		// paperBn
		//
		paperBn.setText("Paper");
		paperBn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				paperBn_actionPerformed(e);
			}

		});
		//
		// scissorBn
		//
		scissorBn.setText("Scissors");               
		scissorBn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				scissorBn_actionPerformed(e);
			}

		});
		//
		// contentPane
		//
		contentPane.setLayout(null);
		addComponent(contentPane, titleLbl, 5,9,370,47);
		addComponent(contentPane, selectionLbl, 9,54,150,35);
		addComponent(contentPane, resultsLbl, 9,93,144,38);
		addComponent(contentPane, resultTextArea, 5,132,398,111);
		addComponent(contentPane, rockBn, 162,58,78,31);
		addComponent(contentPane, paperBn, 247,58,81,31);
		addComponent(contentPane, scissorBn, 334,58,87,31);
		contentPane.setSize(new Dimension(435, 290));
		//
		// JRockPaperScissors
		//		
		setTitle("Paper Rock Scissors");
		setSize(435, 290);
		setVisible(true);
	}

	/** Add Component Without a Layout Manager (Absolute Positioning) */
	private void addComponent(Container container,Component c,int x,int y,int width,int height)
	{
		c.setBounds(x,y,width,height);
		container.add(c);
	}

	/** action event methods */
	private void rockBn_actionPerformed(ActionEvent e)
	{
            //play the game choosing rock
            play(ROCK);
	}

	private void paperBn_actionPerformed(ActionEvent e)
	{
            //play the game choosing paper
            play(PAPER);
	}

	private void scissorBn_actionPerformed(ActionEvent e)
	{
            //play the game choosing scissors
            play(SCISSORS);
	}
        //method to play the game
        private void play(int pick){
             String resultStr = "";                   
             //random computer choice
             cpu = rand.nextInt(CHOICE_MAX);
             //nested if statments to determine winner loser or tie
             if(pick == cpu){
                 ties++;
                 resultStr = "You picked " + selection(pick) + " ---- Computer picked " + selection(cpu);
                 resultStr += "\nWinner: Tie";
                 resultStr += "\nYou: " + Integer.toString(wins) + "  " + "Computer: " + Integer.toString(loses) + " Ties: " + Integer.toString(ties);
                 resultTextArea.setText(resultStr);
             }
             else if( (pick == ROCK) && (cpu == SCISSORS) ){
                 wins++;
                 resultStr = "You picked " + selection(pick) + " ---- Computer picked " + selection(cpu);
                 resultStr += "\nWinner: You";
                 resultStr += "\nYou: " + Integer.toString(wins) + "  " + "Computer: " + Integer.toString(loses) + " Ties: " + Integer.toString(ties);
                 resultTextArea.setText(resultStr);
             }
             else if( (pick == PAPER) && (cpu == ROCK) ){
                 wins++;
                 resultStr = "You picked " + selection(pick) + " ---- Computer picked " + selection(cpu);
                 resultStr += "\nWinner: You";
                 resultStr += "\nYou: " + Integer.toString(wins) + "  " + "Computer: " + Integer.toString(loses) + " Ties: " + Integer.toString(ties);
                 resultTextArea.setText(resultStr);                 
             }
             else if( (pick == SCISSORS) && (cpu == PAPER) ){
                 wins++;
                 resultStr = "You picked " + selection(pick) + " ---- Computer picked " + selection(cpu);
                 resultStr += "\nWinner: You";
                 resultStr += "\nYou: " + Integer.toString(wins) + "  " + "Computer: " + Integer.toString(loses) + " Ties: " + Integer.toString(ties);
                 resultTextArea.setText(resultStr);
             }
             else{
                 loses++;
                 resultStr = "You picked " + selection(pick) + " ---- Computer picked " + selection(cpu);
                 resultStr += "\nWinner: Computer";
                 resultStr += "\nYou: " + Integer.toString(wins) + "  " + "Computer: " + Integer.toString(loses) + " Ties: " + Integer.toString(ties);
                 resultTextArea.setText(resultStr);                 
             }
             
        }
            //function returns paper rock or scissors as a string
             public String selection(int choice){
                 String tempStr;
                 switch(choice){
                   case 0:
                         tempStr = "rock";
                         break;
                   case 1:
                         tempStr = "paper";
                         break;
                   case 2:
                         tempStr = "scissors";
                         break;
                   default:
                         tempStr = "invalid";
                  }
                  return tempStr;
             }

}
I do not understand what I am doing wrong that will require permissions...
nanoashash is offline   Reply With Quote
Old 04-10-2012, 08:14 PM   PM User | #2
Fou-Lu
God Emperor


 
Fou-Lu's Avatar
 
Join Date: Sep 2002
Location: Saskatoon, Saskatchewan
Posts: 15,662
Thanks: 4
Thanked 2,452 Times in 2,421 Posts
Fou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to allFou-Lu is a name known to all
That's interesting. According to this you need security to issue a setTitle command. First I'd try is to remove that line, and see what it does.
I thought they only things that you would require signed applets for were using IO and like (classloaders, runtime resource handling, external stuff more or less). I would *not* expect that setTitle would be the cause, but that is clearly what I have on line 115 here.
Fou-Lu is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 05:07 AM.


Advertisement
Log in to turn off these ads.