This is my current setup:
1) Eclipse 3.5 with plugins: Scala, GAE
2) create a new GAE project without GWT
3) add Scala Nature to project and copy scala-library.jar to /war/WEB-
INF/lib
4) add this to .classpath:
<classpathentry kind="var" path="M2_REPO/net/liftweb/lift-mapper/1.0/
lift-mapper-1.0.jar" sourcepath="M2_REPO/net/liftweb/lift-mapper/1.0/
lift-mapper-1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/net/liftweb/lift-util/1.0/
lift-util-1.0.jar" sourcepath="M2_REPO/net/liftweb/lift-util/1.0/lift-
util-1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/net/liftweb/lift-webkit/1.0/
lift-webkit-1.0.jar" sourcepath="M2_REPO/net/liftweb/lift-webkit/1.0/
lift-webkit-1.0-sources.jar"/>
5) define project properties Java Build Path->Libaries->Add Variable
M2_REPO to maven repository on Mac OS X: /Users/ahe/.m2/repository
(repository needs to be filled with liftweb by creating on project
with maven on command line)
6) copy lift-mapper-1.0.jar, lift-util-1.0.jar, lift-webkit-1.0.jar
to /war/WEB-INF/lib
7) remove existing files in /src and add from default liftweb
structure the folder bootstrap and demo
8) copy from webapp/ templates-hidden and index.html to /war
9) replace from war/WEB-INF/web.xml with webapp/WEB-INF/web.xml
10) start Debug As -> Web Application
2009-08-29 21:14:11.471 java[1289:10b] [Java CocoaComponent
compatibility mode]: Enabled
2009-08-29 21:14:11.474 java[1289:10b] [Java CocoaComponent
compatibility mode]: Setting timeout for SWT to 0.100000
The server is running at
http://localhost:8080/
Page access in Browser (
http://localhost:8080/) will throw this:
29.08.2009 19:14:23 com.google.apphosting.utils.jetty.JettyLogger warn
WARNUNG: Error for /favicon.ico
java.lang.ExceptionInInitializerError
at scala.actors.Actor$class.scheduler(Actor.scala:374)
at net.liftweb.http.SessionMaster$.scheduler(LiftSession.scala:118)
at scala.actors.Actor$class.start(Actor.scala:783)
at net.liftweb.http.SessionMaster$.start(LiftSession.scala:118)
at net.liftweb.http.SessionMaster$.<init>(LiftSession.scala:205)
at net.liftweb.http.SessionMaster$.<clinit>(LiftSession.scala)
at net.liftweb.http.LiftRules$.rewriteTable(LiftRules.scala:408)
at net.liftweb.http.LiftFilterTrait$$anonfun$doFilter$1.apply
(LiftServlet.scala:522)
at net.liftweb.http.LiftFilterTrait$$anonfun$doFilter$1.apply
(LiftServlet.scala:518)
at net.liftweb.http.RequestVarHandler$$anonfun$apply$3$$anonfun$apply
$4$$anonfun$apply$5$$anonfun$apply$6.apply(Vars.scala:197)
at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
at net.liftweb.http.RequestVarHandler$$anonfun$apply$3$$anonfun$apply
$4$$anonfun$apply$5.apply(Vars.scala:196)
at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
at net.liftweb.http.RequestVarHandler$$anonfun$apply$3$$anonfun$apply
$4.apply(Vars.scala:195)
at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
at net.liftweb.http.RequestVarHandler$$anonfun$apply$3.apply
(Vars.scala:194)
at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
at net.liftweb.http.RequestVarHandler$.apply(Vars.scala:193)
at net.liftweb.http.LiftFilterTrait$class.doFilter(LiftServlet.scala:
517)
at net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:536)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at com.google.appengine.tools.development.StaticFileFilter.doFilter
(StaticFileFilter.java:124)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle
(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle
(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle
(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle
(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle
(DevAppEngineWebAppContext.java:54)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:313)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete
(HttpConnection.java:830)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run
(SelectChannelEndPoint.java:396)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run
(BoundedThreadPool.java:442)
Caused by: java.security.AccessControlException: access denied
(java.lang.RuntimePermission modifyThreadGroup)
at java.security.AccessControlContext.checkPermission
(AccessControlContext.java:264)
at java.security.AccessController.checkPermission
(AccessController.java:427)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:
532)
at com.google.appengine.tools.development.DevAppServerFactory
$CustomSecurityManager.checkPermission(DevAppServerFactory.java:128)
at com.google.appengine.tools.development.DevAppServerFactory
$CustomSecurityManager.checkAccess(DevAppServerFactory.java:155)
at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:288)
at java.lang.Thread.init(Thread.java:310)
at java.lang.Thread.<init>(Thread.java:358)
at scala.actors.FJTaskScheduler2.<init>(FJTaskScheduler2.scala:26)
at scala.actors.Scheduler$.<init>(Scheduler.scala:30)
at scala.actors.Scheduler$.<clinit>(Scheduler.scala)
... 42 more
29.08.2009 19:14:23 com.google.apphosting.utils.jetty.JettyLogger warn
WARNUNG: Nested in java.lang.ExceptionInInitializerError:
java.security.AccessControlException: access denied
(java.lang.RuntimePermission modifyThreadGroup)
at java.security.AccessControlContext.checkPermission
(AccessControlContext.java:264)
at java.security.AccessController.checkPermission
(AccessController.java:427)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:
532)
at com.google.appengine.tools.development.DevAppServerFactory
$CustomSecurityManager.checkPermission(DevAppServerFactory.java:128)
at com.google.appengine.tools.development.DevAppServerFactory
$CustomSecurityManager.checkAccess(DevAppServerFactory.java:155)
at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:288)
at java.lang.Thread.init(Thread.java:310)
at java.lang.Thread.<init>(Thread.java:358)
at scala.actors.FJTaskScheduler2.<init>(FJTaskScheduler2.scala:26)
at scala.actors.Scheduler$.<init>(Scheduler.scala:30)
at scala.actors.Scheduler$.<clinit>(Scheduler.scala)
at scala.actors.Actor$class.scheduler(Actor.scala:374)
at net.liftweb.http.SessionMaster$.scheduler(LiftSession.scala:118)
at scala.actors.Actor$class.start(Actor.scala:783)
at net.liftweb.http.SessionMaster$.start(LiftSession.scala:118)
at net.liftweb.http.SessionMaster$.<init>(LiftSession.scala:205)
at net.liftweb.http.SessionMaster$.<clinit>(LiftSession.scala)
at net.liftweb.http.LiftRules$.rewriteTable(LiftRules.scala:408)
at net.liftweb.http.LiftFilterTrait$$anonfun$doFilter$1.apply
(LiftServlet.scala:522)
at net.liftweb.http.LiftFilterTrait$$anonfun$doFilter$1.apply
(LiftServlet.scala:518)
at net.liftweb.http.RequestVarHandler$$anonfun$apply$3$$anonfun$apply
$4$$anonfun$apply$5$$anonfun$apply$6.apply(Vars.scala:197)
at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
at net.liftweb.http.RequestVarHandler$$anonfun$apply$3$$anonfun$apply
$4$$anonfun$apply$5.apply(Vars.scala:196)
at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
at net.liftweb.http.RequestVarHandler$$anonfun$apply$3$$anonfun$apply
$4.apply(Vars.scala:195)
at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
at net.liftweb.http.RequestVarHandler$$anonfun$apply$3.apply
(Vars.scala:194)
at net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:65)
at net.liftweb.http.RequestVarHandler$.apply(Vars.scala:193)
at net.liftweb.http.LiftFilterTrait$class.doFilter(LiftServlet.scala:
517)
at net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:536)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at com.google.appengine.tools.development.StaticFileFilter.doFilter
(StaticFileFilter.java:124)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle
(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle
(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle
(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle
(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle
(DevAppEngineWebAppContext.java:54)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:313)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete
(HttpConnection.java:830)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run
(SelectChannelEndPoint.java:396)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run
(BoundedThreadPool.java:442)
On 27 Aug., 17:23, David Pollak <
feeder.of.the.be...@gmail.com> wrote:
> On Thu, Aug 27, 2009 at 7:49 AM, Andreas <
andreas.heissenber...@gmail.com>wrote:
>
>
>
> > Hi,
>
> > I have a working GAE Scala Eclipse setup based on:
>
> >
http://penguinparens.blogspot.com/2009/04/further-steps-scalagwtapp-e...
> distribution athttp://
github.com/dpp/liftweb/tree/master No fork is
> officially supported and the latest fixes will be in the dpp/liftweb
> repository.
>
>
>
> > thanks
> > Andreas
>
> --
> Lift, the simply functional web frameworkhttp://
liftweb.net
> Beginning Scalahttp://
www.apress.com/book/view/1430219890