javanetbeanssecurity-policy

How do I set the security.policy file for a specific application from within NetBeans?


I am having a bit of trouble -- a lot actually -- trying to figure out how get NetBeans to read my policy file for a particular application. Please take a look at the below code:

      public static void main(final String[] args)
      {
          System.setSecurityManager(new SecurityManager());
          System.setProperty("java.security.policy","file:/C:/Users/kBPersonal/Documents/NetBeansProjects/JAASTest/JAASTest.policy");

          EventQueue.invokeLater(new Runnable()
          {
              public void run()
              {
                  JFrame frame = new JAASFrame();
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  frame.setVisible(true);
              }
          });
      }

No matter what I do I keep getting the following error which lets me know that NetBeans is not reading my security.policy file (I even added it's location to the main security.policy file in the C:\Program Files (x86)\Java\jre6\lib\security\java.security). Incidentally, line 20 is where I try to set the System.setProperty("java.security.policy, ...)

     Exception in thread "main" java.security.AccessControlException: access denied (java.util.PropertyPermission java.security.policy write)
     at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
     at java.security.AccessController.checkPermission(AccessController.java:546)
     at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
     at java.lang.System.setProperty(System.java:725)
     at JAASTest.main(JAASTest.java:20)

Any and all help is greatly appreciated!


Solution

  • The easiest way to set a specific security policy is via a runtime argument. For example, this is what we do here for the same problem:

    1. Open "Project Properties -> Run"
    2. Select your runtime configuration
    3. Edit the "VM Options" for the runtime configuration
    4. Add the following:

      -Djava.security.manager -Djava.security.policy=src/dir1/dir2/important.policy

    where you src/dir1/dir2/important.policy would be changed in your example to point at your file JAASTest.policy.