1

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");

ログは次のように初期化されます。

    private static final Logger log = Logger.getLogger(MyServletName.class.getName());

何が壊れていますか?

4

1 に答える 1

0

代わりにこの行を使用してみてください。私は通常、GAE コードを書くときに次のような行を使用します。

private static final Logger log = Logger.getLogger(MyServletName.class.getSimpleName());

したがって、getSimpleName()代わりに使用しgetName()ます。getName()およびgetSimpleName()に関する java.lang.Class javadoc を参照してください。前者はおそらくクラス型名の末尾に「L」文字を追加しますが、後者はこの(あなたの状況では望ましくない)動作を持っていません。

また、クラスの Logger オブジェクトにGuice インジェクションを使用することを検討してください。

于 2012-10-22T03:31:50.500 に答える