Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Blocker
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
Description
A simple Grails app fails to startup on Google App Engine.
java.lang.NoClassDefFoundError: java.util.logging.LogManager is a restricted class. Please see the Google App Engine developer's guide
for more details.
at org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.java:74)
Caused by: java.lang.NoClassDefFoundError:
java.util.logging.LogManager is a restricted class. Please see the
Google App Engine developer's guide for more details.
at com.google.appengine.runtime.Request.process-7c652c43c1478e0f(Request.java)
at java.util.logging.LogManager.<clinit>(LogManager.java)
It has been mentioned on the usergroup but I don't think anyone raised an issue.
Looks like org.codehaus.groovy.grails.plugins.LoggingGrailsPlugin is the problem!
Activity
Please try with Grails 1.2 M4, this issue may be fixed, but need confirmation
I tried it and still can't get 1.2M4 to work with app engine even if I add the appenders { null name:'stacktrace' }.
I really want to use 1.2 instead of 1.1.1.
here's the error I get:
[java] java.lang.IllegalAccessException: Reflection is not
allowed on public static java.util.logging.LogManager
and the full stacktrace:
Starting AppEngine generated indices thread.
Starting reload monitor thread.
[java] 2009-11-07 16:55:35,020 [main] ERROR context.ContextLoader
- Context initialization failed
[java] org.springframework.beans.factory.access.BootstrapException:
Error executing bootstraps; nested exception is
org.codehaus.groovy.runtime.InvokerInvocationException:
java.lang.IllegalAccessException: Reflection is not allowed on public
static java.util.logging.LogManager
java.util.logging.LogManager.getLogManager()
[java] at
org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.java:74)
[java] at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
[java] at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
[java] at
org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:530)
[java] at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
[java] at
org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
[java] at
org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
[java] at
org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
[java] at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
[java] at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
[java] at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
[java] at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
[java] at org.mortbay.jetty.Server.doStart(Server.java:217)
[java] at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
[java] at
com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:181)
[java] at
com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:116)
[java] at
com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217)
[java] at
com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:162)
[java] at
com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
[java] at
com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113)
[java] at
com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)
[java] Caused by:
org.codehaus.groovy.runtime.InvokerInvocationException:
java.lang.IllegalAccessException: Reflection is not allowed on public
static java.util.logging.LogManager
java.util.logging.LogManager.getLogManager()
[java] at
grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:720)
[java] at grails.spring.BeanBuilder.beans(BeanBuilder.java:570)
[java] Nov 7, 2009 4:55:35 PM
com.google.apphosting.utils.jetty.JettyLogger warn
[java] at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:516)
[java] ... 7 more
[java] Caused by: java.lang.IllegalAccessException: Reflection is
not allowed on public static java.util.logging.LogManager
java.util.logging.LogManager.getLogManager()
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.verifyWhiteListed(Runtime.java:63)
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:97)
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] ... 10 more
[java] WARNING: Failed startup of context
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@18f1d7e{/,/home/justin/.grails/1.2-M4/projects/fourteen-1.2-M4-jpa/stage}
[java] org.springframework.beans.factory.access.BootstrapException:
Error executing bootstraps; nested exception is
org.codehaus.groovy.runtime.InvokerInvocationException:
java.lang.IllegalAccessException: Reflection is not allowed on public
static java.util.logging.LogManager
java.util.logging.LogManager.getLogManager()
[java] at
org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.java:74)
[java] at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
[java] at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
[java] at
org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:530)
[java] at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
[java] at
org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
[java] at
org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
[java] at
org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
[java] at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
[java] at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
[java] at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
[java] at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
[java] at org.mortbay.jetty.Server.doStart(Server.java:217)
[java] at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
[java] at
com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:181)
[java] at
com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:116)
[java] at
com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217)
[java] at
com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:162)
[java] at
com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
[java] at
com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113)
[java] at
com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)
[java] Caused by:
org.codehaus.groovy.runtime.InvokerInvocationException:
java.lang.IllegalAccessException: Reflection is not allowed on public
static java.util.logging.LogManager
java.util.logging.LogManager.getLogManager()
[java] at
grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:720)
[java] at grails.spring.BeanBuilder.beans(BeanBuilder.java:570)
[java] at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:516)
[java] ... 7 more
[java] Caused by: java.lang.IllegalAccessException: Reflection is
not allowed on public static java.util.logging.LogManager
java.util.logging.LogManager.getLogManager()
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.verifyWhiteListed(Runtime.java:63)
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:97)
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] ... 10 more
[java] Nov 7, 2009 4:55:35 PM
com.google.apphosting.utils.jetty.JettyLogger warn
[java] WARNING: Nested in
org.springframework.beans.factory.access.BootstrapException: Error
executing bootstraps; nested exception is
org.codehaus.groovy.runtime.InvokerInvocationException:
java.lang.IllegalAccessException: Reflection is not allowed on public
static java.util.logging.LogManager
java.util.logging.LogManager.getLogManager():
[java] java.lang.IllegalAccessException: Reflection is not
allowed on public static java.util.logging.LogManager
java.util.logging.LogManager.getLogManager()
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.verifyWhiteListed(Runtime.java:63)
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:97)
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at
grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:720)
[java] at grails.spring.BeanBuilder.beans(BeanBuilder.java:570)
[java] at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:516)
[java] at
com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:181)
[java] at
com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:116)
[java] at
com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217)
[java] at
com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:162)
[java] at
com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
[java] at
com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113)
[java] at
com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)
[java] The server is running at http://localhost:8080/
- Context initialization failed [java] org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.IllegalAccessException: Reflection is not allowed on public static java.util.logging.LogManager java.util.logging.LogManager.getLogManager() [java] at org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.java:74) [java] at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) [java] at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) [java] at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:530) [java] at org.mortbay.jetty.servlet.Context.startContext(Context.java:135) [java] at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218) [java] at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500) [java] at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) [java] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) [java] at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) [java] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) [java] at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) [java] at org.mortbay.jetty.Server.doStart(Server.java:217) [java] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) [java] at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:181) [java] at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:116) [java] at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217) [java] at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:162) [java] at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48) [java] at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113) [java] at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89) [java] Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.IllegalAccessException: Reflection is not allowed on public static java.util.logging.LogManager java.util.logging.LogManager.getLogManager() [java] at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:720) [java] at grails.spring.BeanBuilder.beans(BeanBuilder.java:570) [java] Nov 7, 2009 4:55:35 PM com.google.apphosting.utils.jetty.JettyLogger warn [java] at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:516) [java] ... 7 more [java] Caused by: java.lang.IllegalAccessException: Reflection is not allowed on public static java.util.logging.LogManager java.util.logging.LogManager.getLogManager() [java] at com.google.appengine.tools.development.agent.runtime.Runtime.verifyWhiteListed(Runtime.java:63) [java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:97) [java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) [java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) [java] ... 10 more [java] WARNING: Failed startup of context com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@18f1d7e{/,/home/justin/.grails/1.2-M4/projects/fourteen-1.2-M4-jpa/stage} [java] org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.IllegalAccessException: Reflection is not allowed on public static java.util.logging.LogManager java.util.logging.LogManager.getLogManager() [java] at org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.java:74) [java] at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) [java] at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) [java] at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:530) [java] at org.mortbay.jetty.servlet.Context.startContext(Context.java:135) [java] at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218) [java] at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500) [java] at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) [java] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) [java] at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) [java] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) [java] at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) [java] at org.mortbay.jetty.Server.doStart(Server.java:217) [java] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) [java] at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:181) [java] at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:116) [java] at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217) [java] at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:162) [java] at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48) [java] at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113) [java] at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89) [java] Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.IllegalAccessException: Reflection is not allowed on public static java.util.logging.LogManager java.util.logging.LogManager.getLogManager() [java] at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:720) [java] at grails.spring.BeanBuilder.beans(BeanBuilder.java:570) [java] at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:516) [java] ... 7 more [java] Caused by: java.lang.IllegalAccessException: Reflection is not allowed on public static java.util.logging.LogManager java.util.logging.LogManager.getLogManager() [java] at com.google.appengine.tools.development.agent.runtime.Runtime.verifyWhiteListed(Runtime.java:63) [java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:97) [java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) [java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) [java] ... 10 more [java] Nov 7, 2009 4:55:35 PM com.google.apphosting.utils.jetty.JettyLogger warn [java] WARNING: Nested in org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.IllegalAccessException: Reflection is not allowed on public static java.util.logging.LogManager java.util.logging.LogManager.getLogManager(): [java] java.lang.IllegalAccessException: Reflection is not allowed on public static java.util.logging.LogManager java.util.logging.LogManager.getLogManager() [java] at com.google.appengine.tools.development.agent.runtime.Runtime.verifyWhiteListed(Runtime.java:63) [java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:97) [java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) [java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) [java] at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:720) [java] at grails.spring.BeanBuilder.beans(BeanBuilder.java:570) [java] at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:516) [java] at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:181) [java] at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:116) [java] at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217) [java] at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:162) [java] at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48) [java] at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113) [java] at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89) [java] The server is running at http://localhost:8080/
Can you set the following to false in COnfig.groovy and try again:
grails.logging.jul.usebridge = false
grails.logging.jul.usebridge = false
Ok, that got me past that problem now I get this stacktrace when trying to save a new domain object. any thoughts?
[java] 2009-11-09 19:19:06,120 [btpool0-2] ERROR errors.GrailsExceptionResolver - Cannot invoke method values() on null object
[java] java.lang.NullPointerException: Cannot invoke method values() on null object
[java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at org.grails.jpa.JpaPluginSupport$_clinit_closure3_closure6_closure13.doCall(JpaPluginSupport.groovy:462)
[java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at com.unicorn.TestYouController$_closure8_closure9.doCall(TestYouController.groovy:94)
[java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at $Proxy13.doInTransaction(Unknown Source)
[java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at org.grails.jpa.JpaPluginSupport$_clinit_closure3_closure6_closure11_closure38.doCall(JpaPluginSupport.groovy:452)
[java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at com.unicorn.TestYouController$_closure8.doCall(TestYouController.groovy:93)
[java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at com.unicorn.TestYouController$_closure8.doCall(TestYouController.groovy)
[java] at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
[java] at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
[java] at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
[java] at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:121)
[java] at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
[java] at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:342)
For me log-issue seems to be solved with M4 (even without using grails.logging.jul.usebridge = false)
But still there are a couple of other problems which avoid to run the app properly.
@David Can you describe what those problems are?
@justin This seems to be a problem with the gorm-jpa plugin... will look at it shortly
@Graeme: here are the other issues: http://jira.codehaus.org/browse/GRAILS-5365
Another note: I've noticed that there is still a warning when I don't use "grails.logging.jul.usebridge = false" in my Config.groovy. Anyway - the logging is working fine in both cases.
11-13 02:44AM 18.000
{{[sosoapp/14.337720328730581610].<stderr>: log4j:ERROR Error initializing log4j: java.io.FileOutputStream is a restricted class. Please see the Google App Engine developer's guide for more details.}}
@Graeme: I also used 1.2M4 to fix this issue.
@David: Did you leave 'null' name:'stacktrace in the log4J configuration in. I don't get that error with the following in Config.groovy:
log4j = {
// Example of changing the log pattern for the default console
// appender:
//
//appenders {
// console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
//}
'null' name:'stacktrace'
error 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate'
warn 'org.mortbay.log'
@Alex: No, for the latest mentioned test with 1.2M4 I removed the 'null' name:'stacktrace' (as it's a workaround).
For the logging issues I plan to rip out the default Grails logging plugin and replace it with one that uses the standard jul LogManager as per the instructions here: http://code.google.com/appengine/docs/java/runtime.html#Logging
You won't be able to use the Grails log4j integration, but will be able to use a logging.properties file
Grails 1.2 now runs on AppEngine when built from HEAD and will run on AppEngine when 1.2 RC1 is out
I tried this with Grails 1.2RC2 and appengine sdk 1.3.0 and I still get the same error.
The grails-app/conf/Config.groovy file has no appenders enabled by default (the entire block is commented out), but the grails.logging.jul.usebridge property is set to true by default. It has a comment that says to "Disable fo AppEngine!". I tried setting this to false, but I still get the same error.
-----------------
$ which grails
/cygdrive/c/devtools/grails-1.2.0.RC2/bin/grails
$ echo $APPENGINE_HOME
C:\devtools\appengine-java-sdk-1.3.0
$ grails -version
Welcome to Grails 1.2.0.RC2 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: c:/devtools/grails-1.2.0.RC2
...
$ grails app-engine run
...
Starting AppEngine generated indices thread.
Starting reload monitor thread.
[java] log4j:ERROR Error initializing log4j: java.io.FileOutputStream is a
restricted class. Please see the Google App Engine developer's guide for more d
etails.
[java] java.lang.NoClassDefFoundError: java.io.FileOutputStream is a restri
cted class. Please see the Google App Engine developer's guide for more details
.
[java] at com.google.appengine.tools.development.agent.runtime.Runtime.
reject(Runtime.java:51)
[java] at org.apache.log4j.FileAppender.setFile(FileAppender.java:290)
[java] at org.apache.log4j.FileAppender.activateOptions(FileAppender.ja
va:164)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces
sorImpl.java:39)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMet
hodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at com.google.appengine.tools.development.agent.runtime.Runtime.
invoke(Runtime.java:100)
[java] at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoC
achedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)
[java] at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(
PojoMetaMethodSite.java:52)
[java] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCal
l(CallSiteArray.java:40)
[java] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(Ab
stractCallSite.java:117)
[java] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(Ab
stractCallSite.java:121)
[java] at org.codehaus.groovy.grails.plugins.logging.Log4jConfig.create
FullstackTraceAppender(Log4jConfig.groovy:169)
[java] at org.codehaus.groovy.grails.plugins.logging.Log4jConfig.this$2
$createFullstackTraceAppender(Log4jConfig.groovy)
[java] at org.codehaus.groovy.grails.plugins.logging.Log4jConfig$this$2
$createFullstackTraceAppender.callCurrent(Unknown Source)
[java] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCal
lCurrent(CallSiteArray.java:44)
[java] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCur
rent(AbstractCallSite.java:143)
[java] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCur
rent(AbstractCallSite.java:147)
[java] at org.codehaus.groovy.grails.plugins.logging.Log4jConfig.config
ure(Log4jConfig.groovy:136)
[java] at org.codehaus.groovy.grails.web.util.Log4jConfigListener.conte
xtInitialized(Log4jConfigListener.java:63)
[java] at org.mortbay.jetty.handler.ContextHandler.startContext(Context
Handler.java:530)
[java] at org.mortbay.jetty.servlet.Context.startContext(Context.java:1
35)
[java] at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppCon
text.java:1218)
[java] at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandl
er.java:500)
[java] at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.
java:448)
[java] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:40)
[java] at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapp
er.java:117)
[java] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:40)
[java] at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapp
er.java:117)
[java] at org.mortbay.jetty.Server.doStart(Server.java:217)
[java] at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:40)
[java] at com.google.appengine.tools.development.JettyContainerService.
startContainer(JettyContainerService.java:188)
[java] at com.google.appengine.tools.development.AbstractContainerServi
ce.startup(AbstractContainerService.java:120)
[java] at com.google.appengine.tools.development.DevAppServerImpl.start
(DevAppServerImpl.java:217)
[java] at com.google.appengine.tools.development.DevAppServerMain$Start
Action.apply(DevAppServerMain.java:162)
[java] at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(
Parser.java:48)
[java] at com.google.appengine.tools.development.DevAppServerMain.<init
>(DevAppServerMain.java:113)
[java] at com.google.appengine.tools.development.DevAppServerMain.main(
DevAppServerMain.java:89)
This still happens in 1.2, app-engine sdk 1.3, and latest app-engine plugin. None of the workarounds appear to work for me.
My Hardisk is broken so I can't test this! BUT, 2 comments have been added saying this isn't working AFTER it was marked as fixed, so I'm re-opening this on their behalf.
Could you please push 0.8.7 as default installation please? Thanks.
D:\work\project>grails install-plugin app-engine
Welcome to Grails 1.2.0 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: D:\work\librairies\grails-1.2.0
Base Directory: D:\work\
Resolving dependencies...
Dependencies resolved in 596ms.
Running script D:\work\librairies\grails-1.2.0\scripts\InstallPlugin.groovy
Environment set to development
Reading remote plugin list ...
Reading remote plugin list ...
Installing plugin app-engine-0.8.5
grails 2.1 M2 (and presumably M3) and either gae sdk 1.2.5 or 1.2.6 fail with this error after following plugin instructions verbatim (http://grails.org/plugin/app-engine). Full stacktrace:
2009-10-14 15:00:49,559 [Runtime Network Thread] ERROR context.ContextLoader - Context initialization failed
org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoClassDefFoundError: java.util.logging.LogManager is a restricted class. Please see the Google App Engine developer's guide for more details.
at org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.java:74)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:530)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:191)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:168)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:127)
at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:239)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:5135)
at com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:5133)
at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:24)
at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:363)
at com.google.net.rpc.impl.Server$2.run(Server.java:814)
at com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java:56)
at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpanBuilder.java:516)
at com.google.net.rpc.impl.Server.startRpc(Server.java:769)
at com.google.net.rpc.impl.Server.processRequest(Server.java:351)
at com.google.net.rpc.impl.ServerConnection.messageReceived(ServerConnection.java:437)
at com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java:319)
at com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java:290)
at com.google.net.async.Connection.handleReadEvent(Connection.java:436)
at com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:762)
at com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:207)
at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:101)
at com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:251)
at com.google.apphosting.runtime.JavaRuntime$RpcRunnable.run(JavaRuntime.java:396)
at java.lang.Thread.run(Unknown Source)
Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoClassDefFoundError: java.util.logging.LogManager is a restricted class. Please see the Google App Engine developer's guide for more details.
at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:651)
at grails.spring.BeanBuilder.beans(BeanBuilder.java:501)
at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:447)
... 23 more
Caused by: java.lang.NoClassDefFoundError: java.util.logging.LogManager is a restricted class. Please see the Google App Engine developer's guide for more details.
at com.google.appengine.runtime.Request.process-84a25ab912b43edc(Request.java)
at java.util.logging.LogManager.<clinit>(LogManager.java)
... 26 more