I’m running Google Apps locally via eclipse. I connect to http://localhost:8888/ and sometimes Eclipse will throw an exception from this line 374 in AccessControlContext.class:
throw new AccessControlException("access denied "+perm, perm);
Here is the stack trace:
Thread [299085@qtp-12256262-2] (Suspended (exception AccessControlException))
AccessControlContext.checkPermission(Permission) line: 374
AccessController.checkPermission(Permission) line: 546
DevAppServerFactory$CustomSecurityManager(SecurityManager).checkPermission(Permission) line: 532
DevAppServerFactory$CustomSecurityManager.checkPermission(Permission) line: 289
DevAppServerFactory$CustomSecurityManager(SecurityManager).checkPackageAccess(String) line: 1512
Launcher$AppClassLoader.loadClass(String, boolean) line: 298
Launcher$AppClassLoader(ClassLoader).loadClass(String) line: 247
ResourceBundle$RBClassLoader.loadClass(String) line: 435
ResourceBundle$Control.newBundle(String, Locale, String, ClassLoader, boolean) line: 2289
ResourceBundle.loadBundle(CacheKey, List<String>, Control, boolean) line: 1364
ResourceBundle.findBundle(CacheKey, List<Locale>, List<String>, int, Control, ResourceBundle) line: 1328
ResourceBundle.findBundle(CacheKey, List<Locale>, List<String>, int, Control, ResourceBundle) line: 1282
ResourceBundle.findBundle(CacheKey, List<Locale>, List<String>, int, Control, ResourceBundle) line: 1282
ResourceBundle.getBundleImpl(String, Locale, ClassLoader, ResourceBundle$Control) line: 1224
ResourceBundle.getBundle(String) line: 705
Level.getLocalizedName() line: 223
SimpleFormatter.format(LogRecord) line: 64
ConsoleHandler(StreamHandler).publish(LogRecord) line: 179
ConsoleHandler.publish(LogRecord) line: 88
Logger.log(LogRecord) line: 478
Logger.doLog(LogRecord) line: 500
Logger.log(Level, String) line: 523
Logger.warning(String) line: 1026
I’m calling just this:
log.warning("string");
and log is initialized like so:
private static final Logger log = Logger.getLogger(MyServletName.class.getName());
What is breaking?
Try using this line instead. I normally use something similar to the following line when I write GAE code:
So, use
getSimpleName()instead ofgetName(). Read java.lang.Class javadoc on getName() and getSimpleName(). The former probably appends an ‘L’ character to the end of the class type name, while the latter does not possess this (in your situation, undesirable) behaviour.Also, consider using Guice Injection for the class’s Logger object.