我通过eclipse在本地运行Google Apps。我连接到http://localhost:8888/
,有时Eclipse将从AccessControlContext.class中的第374行引发异常:
throw new AccessControlException("access denied "+perm, perm);
这是堆栈跟踪:
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
我正在说这个:
log.warning("string");
和log初始化如下:
private static final Logger log = Logger.getLogger(MyServletName.class.getName());
什么是破碎?
答案 0 :(得分:0)
请尝试使用此行。当我编写GAE代码时,我通常使用类似于以下行的内容:
private static final Logger log = Logger.getLogger(MyServletName.class.getSimpleName());
因此,请使用getSimpleName()
代替getName()
。阅读getName()和getSimpleName()上的java.lang.Class javadoc。前者可能在类类型名称的末尾附加一个“L”字符,而后者不具有此(在您的情况下,不合需要的)行为。
另外,请考虑使用 Guice Injection 作为类的Logger对象。