Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New to the CF scene
    Join Date
    Oct 2011
    Posts
    8
    Thanks
    0
    Thanked 0 Times in 0 Posts

    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.


    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...

  • #2
    God Emperor Fou-Lu's Avatar
    Join Date
    Sep 2002
    Location
    Saskatoon, Saskatchewan
    Posts
    16,979
    Thanks
    4
    Thanked 2,659 Times in 2,628 Posts
    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.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •