You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@click.apache.org by Mykhaylo Kotsur <mi...@gmail.com> on 2010/02/02 21:14:19 UTC

Failed to start 2.1.0 RC1 on Google AppEngine

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.DevAppEngineWebAppContext@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.

Re: Failed to start 2.1.0 RC1 on Google AppEngine

Posted by "Adrian A." <a....@gmail.com>.
> Links seems to be broken :-(
> And is there any manual how to build click jar from sources?
Click is in a migration process right now: from Apache Incubator to a 
TLP project.
(this was announced on the developer list)
This migration might take a while so it's possible that many links won't 
work as expected.

You can find the sources of Click here:
[1] http://svn.apache.org/repos/asf/click/trunk/click/
(they were moved today to the URL above from the old one)

And the build instructions are still in the "developer's guide":
[2] http://incubator.apache.org/click/docs/developer-guide/building.html

As soon as the site will be migrated too, all site URLs will have
   http://click.apache.org/*
instead of the actual
   http://incubator.apache.org/click/*
since Click is no longer an Incubator project.

The entire documentation is also available in the sources (in the 
'documentation' directory), so if you checkout from the URL [1] you will 
have it offline too.

Adrian.


Re: Failed to start 2.1.0 RC1 on Google AppEngine

Posted by Mykhaylo Kotsur <mi...@gmail.com>.
Links seems to be broken :-(
And is there any manual how to build click jar from sources?

Mykhaylo

2010/2/2 Bob Schellink <sa...@gmail.com>

> 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.DevAppEngineWebAppContext@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.
>>
>>
>

Re: Failed to start 2.1.0 RC1 on Google AppEngine

Posted by Bob Schellink <sa...@gmail.com>.
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.DevAppEngineWebAppContext@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.
>


Re: Failed to start 2.1.0 RC1 on Google AppEngine

Posted by Mykhaylo Kotsur <mi...@gmail.com>.
I see, but AFAIK Apache Click supposed to be working on GAE after some
hacks... So, I'm looking for workaround.


2010/2/2 Mike W <mi...@latigosystems.com>

>  There are a number of classes not supported by Google App Engine.
>
>
>
>     http://code.google.com/appengine/docs/java/jrewhitelist.html
> Also from the FAQ: Why can't I write to this file?
>
> Writing to local files is not supported in App Engine due to the
> distributed nature of your application. Instead, data which must be
> persisted should be stored in the distributed datastore<http://code.google.com/appengine/docs/java/datastore/overview.html>.
> For more information see the documentation on the runtime sandbox<http://code.google.com/appengine/docs/java/runtime.html#The_Sandbox>
> .
>
>
>
>
>  On February 2, 2010 at 8:14 PM Mykhaylo Kotsur <mi...@gmail.com> 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.DevAppEngineWebAppContext@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.
>

Re: Failed to start 2.1.0 RC1 on Google AppEngine

Posted by Mike W <mi...@latigosystems.com>.
There are a number of classes not supported by Google App Engine.
 
    http://code.google.com/appengine/docs/java/jrewhitelist.html
Also from the FAQ:

Why can't I write to this file?

Writing to local files is not supported in App Engine due to the distributed
nature of your application. Instead, data which must be persisted should be
stored in the distributed datastore
[http://code.google.com/appengine/docs/java/datastore/overview.html] . For more
information see the documentation on the runtime sandbox
[http://code.google.com/appengine/docs/java/runtime.html#The_Sandbox] .
 
 

On February 2, 2010 at 8:14 PM Mykhaylo Kotsur <mi...@gmail.com> 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.ja
> va: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:11
> 29)
>      [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(Je
> ttyContainerService.java:188)
>      [java]     at
> com.google.appengine.tools.development.AbstractContainerService.startup(Abstra
> ctContainerService.java:120)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl
> .java:217)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevA
> ppServerMain.java:162)
>      [java]     at
> com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMai
> n.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.ja
> va: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:11
> 29)
>      [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(Je
> ttyContainerService.java:188)
>      [java]     at
> com.google.appengine.tools.development.AbstractContainerService.startup(Abstra
> ctContainerService.java:120)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl
> .java:217)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevA
> ppServerMain.java:162)
>      [java]     at
> com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMai
> n.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(Je
> ttyContainerService.java:188)
>      [java]     at
> com.google.appengine.tools.development.AbstractContainerService.startup(Abstra
> ctContainerService.java:120)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl
> .java:217)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevA
> ppServerMain.java:162)
>      [java]     at
> com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMai
> n.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(Je
> ttyContainerService.java:188)
>      [java]     at
> com.google.appengine.tools.development.AbstractContainerService.startup(Abstra
> ctContainerService.java:120)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl
> .java:217)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevA
> ppServerMain.java:162)
>      [java]     at
> com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMai
> n.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.DevAppEngineWebAppContext@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(Je
> ttyContainerService.java:188)
>      [java]     at
> com.google.appengine.tools.development.AbstractContainerService.startup(Abstra
> ctContainerService.java:120)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl
> .java:217)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevA
> ppServerMain.java:162)
>      [java]     at
> com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMai
> n.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(Je
> ttyContainerService.java:188)
>      [java]     at
> com.google.appengine.tools.development.AbstractContainerService.startup(Abstra
> ctContainerService.java:120)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl
> .java:217)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevA
> ppServerMain.java:162)
>      [java]     at
> com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
>      [java]     at
> com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMai
> n.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.