Links seems to be broken :-( And is there any manual how to build click jar from sources?
Mykhaylo 2010/2/2 Bob Schellink <[email protected]> > Hi Mykhaylo, > > Indeed, RC1 doesn't work on GAE, but the current trunk does. There are some > new classes to make Click work on GAE. See this package: > > > http://svn.apache.org/viewvc/incubator/click/trunk/click/extras/src/org/apache/click/extras/gae/ > > More details can be found in the JavaDoc of the following class: > > > http://svn.apache.org/viewvc/incubator/click/trunk/click/extras/src/org/apache/click/extras/gae/GoogleAppEngineListener.java?view=markup > > Hope this helps. > > kind regards > > bob > > > On 3/02/2010 07:14 AM, Mykhaylo Kotsur wrote: > >> Hi! >> >> I failed to run Apache Click on Google appengine. When starting GAE >> appserver I get: >> >> runserver: >> [java] java.lang.NoClassDefFoundError: java.io.FileOutputStream is >> a restricted 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.click.util.ClickUtils.deployFile(ClickUtils.java:1242) >> [java] at >> org.apache.click.util.ClickUtils.deployFiles(ClickUtils.java:1305) >> [java] at >> >> org.apache.click.service.XmlConfigService.deployFiles(XmlConfigService.java:1129) >> [java] at >> >> org.apache.click.service.XmlConfigService.onInit(XmlConfigService.java:229) >> [java] at >> org.apache.click.ClickServlet.initConfigService(ClickServlet.java:1587) >> [java] at >> org.apache.click.ClickServlet.init(ClickServlet.java:183) >> [java] at >> javax.servlet.GenericServlet.init(GenericServlet.java:215) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433) >> [java] at >> org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) >> [java] at >> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:612) >> [java] at >> org.mortbay.jetty.servlet.Context.startContext(Context.java:139) >> [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:188) >> [java] at >> >> com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:120) >> [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] Feb 2, 2010 7:31:44 PM >> com.google.appengine.tools.development.ApiProxyLocalImpl log >> [java] SEVERE: [1265139104791000] javax.servlet.ServletContext >> log: ClickServlet: error while initializing Click servlet; throwing >> javax.servlet.UnavailableException >> [java] java.lang.NoClassDefFoundError: java.io.FileOutputStream is >> a restricted 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.click.util.ClickUtils.deployFile(ClickUtils.java:1242) >> [java] at >> org.apache.click.util.ClickUtils.deployFiles(ClickUtils.java:1305) >> [java] at >> >> org.apache.click.service.XmlConfigService.deployFiles(XmlConfigService.java:1129) >> [java] at >> >> org.apache.click.service.XmlConfigService.onInit(XmlConfigService.java:229) >> [java] at >> org.apache.click.ClickServlet.initConfigService(ClickServlet.java:1587) >> [java] at >> org.apache.click.ClickServlet.init(ClickServlet.java:183) >> [java] at >> javax.servlet.GenericServlet.init(GenericServlet.java:215) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433) >> [java] at >> org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) >> [java] at >> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:612) >> [java] at >> org.mortbay.jetty.servlet.Context.startContext(Context.java:139) >> [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:188) >> [java] at >> >> com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:120) >> [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] >> [java] Feb 2, 2010 7:31:44 PM >> com.google.apphosting.utils.jetty.JettyLogger warn >> [java] WARNING: failed ClickServlet >> [java] javax.servlet.ServletException: >> javax.servlet.UnavailableException: java.lang.NoClassDefFoundError: >> java.io.FileOutputStream is a restricted class. Please see the Google >> App Engine developer's guide for more details. >> [java] at >> >> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:437) >> [java] at >> org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) >> [java] at >> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:612) >> [java] at >> org.mortbay.jetty.servlet.Context.startContext(Context.java:139) >> [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:188) >> [java] at >> >> com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:120) >> [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: javax.servlet.UnavailableException: >> java.lang.NoClassDefFoundError: java.io.FileOutputStream is a restricted >> class. Please see the Google App Engine developer's guide for more >> details. >> [java] at >> org.apache.click.ClickServlet.init(ClickServlet.java:205) >> [java] at >> javax.servlet.GenericServlet.init(GenericServlet.java:215) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433) >> [java] ... 20 more >> [java] Feb 2, 2010 7:31:44 PM >> com.google.apphosting.utils.jetty.JettyLogger warn >> [java] WARNING: Nested in javax.servlet.ServletException: >> javax.servlet.UnavailableException: java.lang.NoClassDefFoundError: >> java.io.FileOutputStream is a restricted class. Please see the Google >> App Engine developer's guide for more details.: >> [java] javax.servlet.UnavailableException: >> java.lang.NoClassDefFoundError: java.io.FileOutputStream is a restricted >> class. Please see the Google App Engine developer's guide for more >> details. >> [java] at >> org.apache.click.ClickServlet.init(ClickServlet.java:205) >> [java] at >> javax.servlet.GenericServlet.init(GenericServlet.java:215) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433) >> [java] at >> org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) >> [java] at >> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:612) >> [java] at >> org.mortbay.jetty.servlet.Context.startContext(Context.java:139) >> [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:188) >> [java] at >> >> com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:120) >> [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] Feb 2, 2010 7:31:44 PM >> com.google.apphosting.utils.jetty.JettyLogger warn >> [java] WARNING: Failed startup of context >> com.google.apphosting.utils.jetty.devappenginewebappcont...@ce2187 >> {/,/home/mkotsur/IdeaProjects/rssgrep/war} >> [java] javax.servlet.ServletException: >> javax.servlet.UnavailableException: java.lang.NoClassDefFoundError: >> java.io.FileOutputStream is a restricted class. Please see the Google >> App Engine developer's guide for more details. >> [java] at >> >> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:437) >> [java] at >> org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) >> [java] at >> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:612) >> [java] at >> org.mortbay.jetty.servlet.Context.startContext(Context.java:139) >> [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:188) >> [java] at >> >> com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:120) >> [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: javax.servlet.UnavailableException: >> java.lang.NoClassDefFoundError: java.io.FileOutputStream is a restricted >> class. Please see the Google App Engine developer's guide for more >> details. >> [java] at >> org.apache.click.ClickServlet.init(ClickServlet.java:205) >> [java] at >> javax.servlet.GenericServlet.init(GenericServlet.java:215) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433) >> [java] ... 20 more >> [java] Feb 2, 2010 7:31:44 PM >> com.google.apphosting.utils.jetty.JettyLogger warn >> [java] WARNING: Nested in javax.servlet.ServletException: >> javax.servlet.UnavailableException: java.lang.NoClassDefFoundError: >> java.io.FileOutputStream is a restricted class. Please see the Google >> App Engine developer's guide for more details.: >> [java] javax.servlet.UnavailableException: >> java.lang.NoClassDefFoundError: java.io.FileOutputStream is a restricted >> class. Please see the Google App Engine developer's guide for more >> details. >> [java] at >> org.apache.click.ClickServlet.init(ClickServlet.java:205) >> [java] at >> javax.servlet.GenericServlet.init(GenericServlet.java:215) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433) >> [java] at >> org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) >> [java] at >> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) >> [java] at >> >> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:612) >> [java] at >> org.mortbay.jetty.servlet.Context.startContext(Context.java:139) >> [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:188) >> [java] at >> >> com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:120) >> [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/ >> >> Part of my web.xml: >> >> <servlet> >> <servlet-name>ClickServlet</servlet-name> >> <servlet-class>org.apache.click.ClickServlet</servlet-class> >> <load-on-startup>0</load-on-startup> >> </servlet> >> >> Version of click: 2.1.0 RC1 >> >> Thanks in advance. >> >> >
