TemplateException: object List does not have a member apply

273 views
Skip to first unread message

Mads Hartmann

unread,
Sep 7, 2011, 9:00:26 AM9/7/11
to Scalate
Hi guys,

I'm working on version 1.7 of Lifty which is a SBT 10.1 plugin. It
uses Scalate 1.4.1 because it was the most recent version of Scalate I
could find that was compiled with Scala 2.8.1 (you have to use 2.8.1
when writing plugins).

When I run my code in SBT using 'run' it renders the templates just
fine using Scalate. When I publish-local and run it as a plugin it
gives me this exception (pasted below).

I even tried setting the class-path of the TemplateEngine explicitly
as the following without any luck.

/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-
library.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-
compiler.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-
core/bundles/scalate-core-1.4.1.jar

Has anyone seen an error like this before or know how I might fix
it?

org.fusesource.scalate.TemplateException: object List does not have a
member apply
at
org.fusesource.scalate.TemplateEngine.compileAndLoad(TemplateEngine.scala:
775)
at
org.fusesource.scalate.TemplateEngine.compileAndLoadEntry(TemplateEngine.scala:
637)
at
org.fusesource.scalate.TemplateEngine.liftedTree1$1(TemplateEngine.scala:
368)
at org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:
362)
at org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:
408)
at org.lifty.engine.Scalate$.org$lifty$engine$Scalate$
$render(Scalate.scala:179)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5$$anonfun$apply$6$$anonfun$apply
$7.apply(Scalate.scala:87)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5$$anonfun$apply$6$$anonfun$apply
$7.apply(Scalate.scala:86)
at scala.Option.flatMap(Option.scala:142)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5$$anonfun$apply
$6.apply(Scalate.scala:86)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5$$anonfun$apply
$6.apply(Scalate.scala:85)
at scala.Option.flatMap(Option.scala:142)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5.apply(Scalate.scala:85)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5.apply(Scalate.scala:84)
at scala.Option.flatMap(Option.scala:142)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1.apply(Scalate.scala:84)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1.apply(Scalate.scala:80)
at scala.Option.flatMap(Option.scala:142)
at org.lifty.engine.Scalate$.org$lifty$engine$Scalate$
$processTemplate(Scalate.scala:80)
at org.lifty.engine.Scalate$$anonfun$run$1.apply(Scalate.scala:32)
at org.lifty.engine.Scalate$$anonfun$run$1.apply(Scalate.scala:30)
at scala.collection.LinearSeqOptimized
$class.foreach(LinearSeqOptimized.scala:61)
at scala.collection.immutable.List.foreach(List.scala:45)
at org.lifty.engine.Scalate$.run(Scalate.scala:30)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14$$anonfun$apply$15$$anonfun$apply
$16.apply(Lifty.scala:92)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14$$anonfun$apply$15$$anonfun$apply
$16.apply(Lifty.scala:92)
at scalaz.Identity$$anon$1.value(Identity.scala:170)
at scalaz.Identity$class.success(Identity.scala:101)
at scalaz.Identity$$anon$1.success(Identity.scala:169)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14$$anonfun$apply
$15.apply(Lifty.scala:92)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14$$anonfun$apply
$15.apply(Lifty.scala:91)
at scalaz.Validation$class.flatMap(Validation.scala:22)
at scalaz.Success.flatMap(Validation.scala:82)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14.apply(Lifty.scala:91)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14.apply(Lifty.scala:89)
at scalaz.Validation$class.flatMap(Validation.scala:22)
at scalaz.Success.flatMap(Validation.scala:82)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13.apply(Lifty.scala:89)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13.apply(Lifty.scala:88)
at scalaz.Validation$class.flatMap(Validation.scala:22)
at scalaz.Success.flatMap(Validation.scala:82)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7.apply(Lifty.scala:88)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7.apply(Lifty.scala:87)
at scala.Option.map(Option.scala:129)
at org.lifty.engine.Lifty$class.org$lifty$engine$Lifty$
$runCommand(Lifty.scala:87)
at org.lifty.engine.Lifty$$anonfun$run$2.apply(Lifty.scala:33)
at org.lifty.engine.Lifty$$anonfun$run$2.apply(Lifty.scala:31)
at scala.Option.map(Option.scala:129)
at org.lifty.engine.Lifty$class.run(Lifty.scala:31)
at org.lifty.engine.LiftyInstance.run(Lifty.scala:164)
at org.lifty.Lifty$$anonfun$liftyCommand$1.apply(Lifty.scala:22)
at org.lifty.Lifty$$anonfun$liftyCommand$1.apply(Lifty.scala:14)
at sbt.Command$$anonfun$sbt$Command$$apply1$1$$anonfun$apply
$6.apply(Command.scala:73)
at sbt.Command$.process(Command.scala:91)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:66)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:66)
at sbt.State$$anon$1.process(State.scala:59)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:66)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:66)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:13)
at sbt.MainLoop$.next(Main.scala:66)
at sbt.MainLoop$.run(Main.scala:61)
at sbt.xMain.run(Main.scala:33)
at xsbt.boot.Launch$.run(Launch.scala:54)
at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:43)
at xsbt.boot.Launch$.launch(Launch.scala:68)
at xsbt.boot.Launch$.apply(Launch.scala:14)
at xsbt.boot.Boot$.runImpl(Boot.scala:24)
at xsbt.boot.Boot$.main(Boot.scala:15)
at xsbt.boot.Boot.main(Boot.scala)
Caused by: scala.tools.nsc.FatalError: object List does not have a
member apply
at scala.tools.nsc.symtab.Definitions$definitions
$.getMember(Definitions.scala:496)
at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:
2456)
at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:
3380)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4049)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4203)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:
2128)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun
$20.apply(Typers.scala:2196)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun
$20.apply(Typers.scala:2196)
at scala.collection.immutable.List.loop$1(List.scala:115)
at scala.collection.immutable.List.mapConserve(List.scala:132)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:
2196)
at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:
1948)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3894)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4203)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4252)
at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:
1787)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3862)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4203)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:
2128)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun
$20.apply(Typers.scala:2196)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun
$20.apply(Typers.scala:2196)
at scala.collection.immutable.List.loop$1(List.scala:115)
at scala.collection.immutable.List.mapConserve(List.scala:132)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:
2196)
at scala.tools.nsc.typechecker.Typers
$Typer.typedTemplate(Typers.scala:1549)
at scala.tools.nsc.typechecker.Typers
$Typer.typedModuleDef(Typers.scala:1348)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3856)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4203)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:
2128)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun
$20.apply(Typers.scala:2196)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun
$20.apply(Typers.scala:2196)
at scala.collection.immutable.List.loop$1(List.scala:115)
at scala.collection.immutable.List.mapConserve(List.scala:132)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:
2196)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3849)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4203)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4252)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon
$3.apply(Analyzer.scala:85)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase
$1.apply(Global.scala:282)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase
$1.apply(Global.scala:282)
at scala.tools.nsc.reporters.Reporter.withSource(Reporter.scala:48)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:282)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun
$run$1.apply(Analyzer.scala:80)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun
$run$1.apply(Analyzer.scala:80)
at scala.collection.Iterator$class.foreach(Iterator.scala:631)
at scala.collection.mutable.ListBuffer$$anon
$1.foreach(ListBuffer.scala:304)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon
$3.run(Analyzer.scala:80)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:741)
at scala.tools.nsc.Global$Run.compile(Global.scala:822)
at
org.fusesource.scalate.support.ScalaCompiler.compile(ScalaCompiler.scala:
80)
at
org.fusesource.scalate.TemplateEngine.compileAndLoad(TemplateEngine.scala:
691)
at
org.fusesource.scalate.TemplateEngine.compileAndLoadEntry(TemplateEngine.scala:
637)
at
org.fusesource.scalate.TemplateEngine.liftedTree1$1(TemplateEngine.scala:
368)
at org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:
362)
at org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:
408)
at org.lifty.engine.Scalate$.org$lifty$engine$Scalate$
$render(Scalate.scala:179)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5$$anonfun$apply$6$$anonfun$apply
$7.apply(Scalate.scala:87)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5$$anonfun$apply$6$$anonfun$apply
$7.apply(Scalate.scala:86)
at scala.Option.flatMap(Option.scala:142)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5$$anonfun$apply
$6.apply(Scalate.scala:86)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5$$anonfun$apply
$6.apply(Scalate.scala:85)
at scala.Option.flatMap(Option.scala:142)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5.apply(Scalate.scala:85)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1$$anonfun$apply$5.apply(Scalate.scala:84)
at scala.Option.flatMap(Option.scala:142)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1.apply(Scalate.scala:84)
at org.lifty.engine.Scalate$$anonfun$org$lifty$engine$Scalate$
$processTemplate$1.apply(Scalate.scala:80)
at scala.Option.flatMap(Option.scala:142)
at org.lifty.engine.Scalate$.org$lifty$engine$Scalate$
$processTemplate(Scalate.scala:80)
at org.lifty.engine.Scalate$$anonfun$run$1.apply(Scalate.scala:32)
at org.lifty.engine.Scalate$$anonfun$run$1.apply(Scalate.scala:30)
at scala.collection.LinearSeqOptimized
$class.foreach(LinearSeqOptimized.scala:61)
at scala.collection.immutable.List.foreach(List.scala:45)
at org.lifty.engine.Scalate$.run(Scalate.scala:30)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14$$anonfun$apply$15$$anonfun$apply
$16.apply(Lifty.scala:92)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14$$anonfun$apply$15$$anonfun$apply
$16.apply(Lifty.scala:92)
at scalaz.Identity$$anon$1.value(Identity.scala:170)
at scalaz.Identity$class.success(Identity.scala:101)
at scalaz.Identity$$anon$1.success(Identity.scala:169)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14$$anonfun$apply
$15.apply(Lifty.scala:92)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14$$anonfun$apply
$15.apply(Lifty.scala:91)
at scalaz.Validation$class.flatMap(Validation.scala:22)
at scalaz.Success.flatMap(Validation.scala:82)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14.apply(Lifty.scala:91)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13$$anonfun$apply$14.apply(Lifty.scala:89)
at scalaz.Validation$class.flatMap(Validation.scala:22)
at scalaz.Success.flatMap(Validation.scala:82)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13.apply(Lifty.scala:89)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7$$anonfun$apply$13.apply(Lifty.scala:88)
at scalaz.Validation$class.flatMap(Validation.scala:22)
at scalaz.Success.flatMap(Validation.scala:82)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7.apply(Lifty.scala:88)
at org.lifty.engine.Lifty$$anonfun$org$lifty$engine$Lifty$$runCommand
$7.apply(Lifty.scala:87)
at scala.Option.map(Option.scala:129)
at org.lifty.engine.Lifty$class.org$lifty$engine$Lifty$
$runCommand(Lifty.scala:87)
at org.lifty.engine.Lifty$$anonfun$run$2.apply(Lifty.scala:33)
at org.lifty.engine.Lifty$$anonfun$run$2.apply(Lifty.scala:31)
at scala.Option.map(Option.scala:129)
at org.lifty.engine.Lifty$class.run(Lifty.scala:31)
at org.lifty.engine.LiftyInstance.run(Lifty.scala:164)
at org.lifty.Lifty$$anonfun$liftyCommand$1.apply(Lifty.scala:22)
at org.lifty.Lifty$$anonfun$liftyCommand$1.apply(Lifty.scala:14)
at sbt.Command$$anonfun$sbt$Command$$apply1$1$$anonfun$apply
$6.apply(Command.scala:73)
at sbt.Command$.process(Command.scala:91)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:66)
at sbt.MainLoop$$anonfun$next$1$$anonfun$apply$1.apply(Main.scala:66)
at sbt.State$$anon$1.process(State.scala:59)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:66)
at sbt.MainLoop$$anonfun$next$1.apply(Main.scala:66)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:13)
at sbt.MainLoop$.next(Main.scala:66)
at sbt.MainLoop$.run(Main.scala:61)
at sbt.xMain.run(Main.scala:33)
at xsbt.boot.Launch$.run(Launch.scala:54)
at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:43)
at xsbt.boot.Launch$.launch(Launch.scala:68)
at xsbt.boot.Launch$.apply(Launch.scala:14)
at xsbt.boot.Boot$.runImpl(Boot.scala:24)
at xsbt.boot.Boot$.main(Boot.scala:15)
at xsbt.boot.Boot.main(Boot.scala)

James Strachan

unread,
Sep 7, 2011, 10:51:17 AM9/7/11
to sca...@googlegroups.com
Glad you finally got off the 2.7.x Scala version at least :)

I guess if the same template works in one case and not the other it
must be a class loader issue. One of the problems with passing the
class loader to the ScalaCompiler is we must specify it as a list of
URLs; we can't just pass the current ClassLoader or anything; so it
might be missing the right scala-library or something?

We have to pass in the classpath using a list of paths/jars here...
https://github.com/scalate/scalate/blob/master/scalate-core/src/main/scala/org/fusesource/scalate/support/ScalaCompiler.scala#L98

I wonder if we need to put the passed in classpath further up the list
to avoid finding the wrong scala-library?

--
James
-------
FuseSource
Email: ja...@fusesource.com
Web: http://fusesource.com
Twitter: jstrachan, fusenews
Blog: http://macstrac.blogspot.com/

Open Source Integration and Messaging

James Strachan

unread,
Sep 7, 2011, 10:53:30 AM9/7/11
to sca...@googlegroups.com
BTW I wonder if its worth enabling debug logging to see what class
path is being used?

at debug level we dump the class path value and the various class loaders found:
https://github.com/scalate/scalate/blob/master/scalate-core/src/main/scala/org/fusesource/scalate/support/ScalaCompiler.scala#L113

Mads Hartmann Jensen

unread,
Sep 7, 2011, 10:58:46 AM9/7/11
to sca...@googlegroups.com
Yes, that sounds like a convenient thing to know :) How to I specify the logging level of the TemplateEngine? 

Mads Hartmann Jensen

unread,
Sep 7, 2011, 10:59:27 AM9/7/11
to sca...@googlegroups.com
Also, Thanks for helping me out. This should be one of the last things I need to resolve before I can publish a RC0 version :)

James Strachan

unread,
Sep 7, 2011, 11:07:01 AM9/7/11
to sca...@googlegroups.com
On 7 September 2011 15:58, Mads Hartmann Jensen <mad...@gmail.com> wrote:
> Yes, that sounds like a convenient thing to know :) How to I specify the
> logging level of the TemplateEngine?

Its the general slf4j logging malarkey; so if you add a dependency on
logback you can add a logback.xml file...
http://stackoverflow.com/questions/5612806/how-do-i-get-slf4j-to-output-some-logging-statements/5613381#5613381

not sure how sbt does logging or if it supports org.slf4j though.

Or you can get it to use the underlying JDK's logging API...
http://stackoverflow.com/questions/4278438/slf4j-logging-with-jdk-how-to-enable-debug/4278893#4278893


> Also, Thanks for helping me out. This should be one of the last things I
> need to resolve before I can publish a RC0 version :)

Yay :)

Mads Hartmann Jensen

unread,
Sep 7, 2011, 11:28:31 AM9/7/11
to sca...@googlegroups.com
Does this tell you anything that can help? 

17:27:12,537 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
17:27:12,537 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
17:27:12,537 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [jar:file:/Users/Mads/.ivy2/local/org.lifty/lifty-engine_2.8.1/0.7-RC0-LOCAL/jars/lifty-engine_2.8.1.jar!/logback.xml]
17:27:12,583 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
17:27:12,583 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
17:27:12,587 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
17:27:12,631 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - This appender no longer admits a layout as a sub-component, set an encoder instead.
17:27:12,631 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
17:27:12,631 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
17:27:12,632 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
17:27:12,632 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]

17:27:12.641 [main] DEBUG o.f.scalate.util.ClassFinder - loaded classes: List()
17:27:12.645 [main] DEBUG o.f.scalate.util.ClassFinder - loaded commands from jar:file:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-core/bundles/scalate-core-1.4.1.jar!/META-INF/services/org.fusesource.scalate/addon.index
17:27:12.646 [main] DEBUG o.f.scalate.util.ClassFinder - loaded classes: List(org.fusesource.scalate.filter.ScalaMarkdownFilter)
Setting classpath to /Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-library.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-compiler.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-core/bundles/scalate-core-1.4.1.jar
Rendering: main_build.ssp
17:27:13.095 [main] DEBUG o.f.scalate.support.TemplatePackage - Trying to find Scalate Package class: kzdqtxjn1gz6r6crprtkk29c0000gn.T.ScalatePackage
17:27:13.097 [main] DEBUG o.f.scalate.support.TemplatePackage - Trying to find Scalate Package class: kzdqtxjn1gz6r6crprtkk29c0000gn.ScalatePackage
17:27:13.097 [main] DEBUG o.f.scalate.support.TemplatePackage - Trying to find Scalate Package class: ScalatePackage
17:27:13.098 [main] DEBUG o.f.scalate.support.TemplatePackage - No ScalatePackage class found from templates package: kzdqtxjn1gz6r6crprtkk29c0000gn.T on the class loaders: List(sun.misc.Launcher$AppClassLoader@61e63e3d, java.net.URLClassLoader@77411b30)
17:27:13.104 [main] DEBUG o.f.s.support.DefaultTemplatePackage - Could not find a class on the classpath based on the current url: var/folders/13/kzdqtxjn1gz6r6crprtkk29c0000gn/T/lifty6965372598731092055.ssp
17:27:13.170 [main] DEBUG o.f.scalate.support.ScalaCompiler - using classpath: /usr/local/Cellar/sbt/0.10.1/libexec/sbt-launch.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/jline.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-compiler.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-library.jar:/Users/Mads/.sbt/plugins/target/scala-2.8.1.final/classes:/Users/Mads/.ivy2/local/org.lifty/lifty_2.8.1/1.7-RC0-LOCAL/jars/lifty_2.8.1.jar:/Users/Mads/.ivy2/local/org.lifty/lifty-engine_2.8.1/0.7-RC0-LOCAL/jars/lifty-engine_2.8.1.jar:/Users/Mads/.ivy2/cache/net.liftweb/lift-json_2.8.1/jars/lift-json_2.8.1-2.4-M3.jar:/Users/Mads/.ivy2/cache/com.thoughtworks.paranamer/paranamer/jars/paranamer-2.3.jar:/Users/Mads/.ivy2/cache/org.scala-lang/scalap/jars/scalap-2.8.1.jar:/Users/Mads/.ivy2/cache/org.scalaz/scalaz-core_2.8.1/jars/scalaz-core_2.8.1-6.0.1.jar:/Users/Mads/.ivy2/cache/jline/jline/jars/jline-0.9.94.jar:/Users/Mads/.ivy2/cache/junit/junit/jars/junit-3.8.1.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-core/bundles/scalate-core-1.4.1.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-util/bundles/scalate-util-1.4.1.jar:/Users/Mads/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.6.1.jar:/Users/Mads/.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-0.9.26.jar:/Users/Mads/.ivy2/cache/ch.qos.logback/logback-core/jars/logback-core-0.9.26.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/actions_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/api_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/cache_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/classfile_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/classpath_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/collections_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/commons-codec-1.2.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/commons-httpclient-3.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/commons-logging-1.0.4.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/compile_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/completion_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/control_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/discovery_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/incremental-compiler_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/io_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/ivy-2.2.0.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/ivy_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/jline-0.9.94.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/jsch-0.1.31.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/launcher-interface_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/logging_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/main_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/persist_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/process_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/run_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/sbinary_2.8.1-0.4.0.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/sbt_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/task-system_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/tasks_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/test-interface-0.5.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/testing_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/tracking_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/xsbti/interface-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-library.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-compiler.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-core/bundles/scalate-core-1.4.1.jar
17:27:13.172 [main] DEBUG o.f.scalate.support.ScalaCompiler - system class loader: sun.misc.Launcher$AppClassLoader@61e63e3d
17:27:13.173 [main] DEBUG o.f.scalate.support.ScalaCompiler - context class loader: sun.misc.Launcher$AppClassLoader@61e63e3d
17:27:13.174 [main] DEBUG o.f.scalate.support.ScalaCompiler - scalate class loader: java.net.URLClassLoader@77411b30

Mads Hartmann Jensen

unread,
Sep 7, 2011, 4:20:55 PM9/7/11
to sca...@googlegroups.com
Hi James,

Moving the '.addEntry(classpath)' up doesn't seem to fix the issue: See 


Btw, this is the new log after using the patch and running lifty

21:51:57.921 [main] DEBUG o.f.scalate.util.ClassFinder - loaded classes: List()
21:51:57.925 [main] DEBUG o.f.scalate.util.ClassFinder - loaded commands from jar:file:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-core/bundles/scalate-core-1.6.0-SNAPSHOT.jar!/META-INF/services/org.fusesource.scalate/addon.index
21:51:57.926 [main] DEBUG o.f.scalate.util.ClassFinder - loaded classes: List(org.fusesource.scalate.filter.ScalaMarkdownFilter)
21:51:57.930 [main] DEBUG o.fusesource.scalate.TemplateEngine - Installing Scalate add on class org.fusesource.scalate.filter.ScalaMarkdownFilter$
Setting classpath to /Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-library.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-compiler.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-core/bundles/scalate-core-1.4.1.jar
Rendering: main_build.ssp
21:51:58.421 [main] DEBUG o.f.scalate.support.TemplatePackage - Trying to find Scalate Package class: kzdqtxjn1gz6r6crprtkk29c0000gn.T.ScalatePackage
21:51:58.423 [main] DEBUG o.f.scalate.support.TemplatePackage - Trying to find Scalate Package class: kzdqtxjn1gz6r6crprtkk29c0000gn.ScalatePackage
21:51:58.423 [main] DEBUG o.f.scalate.support.TemplatePackage - Trying to find Scalate Package class: ScalatePackage
21:51:58.424 [main] DEBUG o.f.scalate.support.TemplatePackage - No ScalatePackage class found from templates package: kzdqtxjn1gz6r6crprtkk29c0000gn.T on the class loaders: List(sun.misc.Launcher$AppClassLoader@61e63e3d, java.net.URLClassLoader@73e74d83)
21:51:58.431 [main] DEBUG o.f.s.support.DefaultTemplatePackage - Could not find a class on the classpath based on the current url: var/folders/13/kzdqtxjn1gz6r6crprtkk29c0000gn/T/lifty2594336054001211134.ssp
21:51:58.559 [main] DEBUG o.f.scalate.support.ScalaCompiler - using classpath: /usr/local/Cellar/sbt/0.10.1/libexec/sbt-launch.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/jline.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-compiler.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-library.jar:/Users/Mads/.sbt/plugins/target/scala-2.8.1.final/classes:/Users/Mads/.ivy2/local/org.lifty/lifty_2.8.1/1.7-RC0-LOCAL/jars/lifty_2.8.1.jar:/Users/Mads/.ivy2/local/org.lifty/lifty-engine_2.8.1/0.7-RC0-LOCAL/jars/lifty-engine_2.8.1.jar:/Users/Mads/.ivy2/cache/net.liftweb/lift-json_2.8.1/jars/lift-json_2.8.1-2.4-M3.jar:/Users/Mads/.ivy2/cache/com.thoughtworks.paranamer/paranamer/jars/paranamer-2.3.jar:/Users/Mads/.ivy2/cache/org.scala-lang/scalap/jars/scalap-2.8.1.jar:/Users/Mads/.ivy2/cache/org.scalaz/scalaz-core_2.8.1/jars/scalaz-core_2.8.1-6.0.1.jar:/Users/Mads/.ivy2/cache/jline/jline/jars/jline-0.9.94.jar:/Users/Mads/.ivy2/cache/junit/junit/jars/junit-3.8.1.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-core/bundles/scalate-core-1.6.0-SNAPSHOT.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-util/bundles/scalate-util-1.6.0-SNAPSHOT.jar:/Users/Mads/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.6.1.jar:/Users/Mads/.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-0.9.26.jar:/Users/Mads/.ivy2/cache/ch.qos.logback/logback-core/jars/logback-core-0.9.26.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/actions_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/api_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/cache_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/classfile_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/classpath_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/collections_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/commons-codec-1.2.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/commons-httpclient-3.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/commons-logging-1.0.4.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/compile_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/completion_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/control_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/discovery_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/incremental-compiler_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/io_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/ivy-2.2.0.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/ivy_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/jline-0.9.94.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/jsch-0.1.31.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/launcher-interface_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/logging_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/main_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/persist_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/process_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/run_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/sbinary_2.8.1-0.4.0.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/sbt_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/task-system_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/tasks_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/test-interface-0.5.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/testing_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/tracking_2.8.1-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/org.scala-tools.sbt/sbt/0.10.1/xsbti/interface-0.10.1.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-library.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala-compiler.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate-core/bundles/scalate-core-1.4.1.jar
21:51:58.579 [main] DEBUG o.f.scalate.support.ScalaCompiler - system class loader: sun.misc.Launcher$AppClassLoader@61e63e3d
21:51:58.580 [main] DEBUG o.f.scalate.support.ScalaCompiler - context class loader: sun.misc.Launcher$AppClassLoader@61e63e3d
21:51:58.580 [main] DEBUG o.f.scalate.support.ScalaCompiler - scalate class loader: java.net.URLClassLoader@73e74d83

Vaughan

unread,
Oct 17, 2011, 9:40:57 AM10/17/11
to sca...@googlegroups.com
I'm having the same problem. Did you have any luck fixing it?

I started stepping through the code in IntelliJ and here's some things I found that may provide some hints to a fix.

Here's my code:

  def render(file: File): String = {
    import java.io.{PrintWriter, StringWriter}
    import org.fusesource.scalate.{TemplateEngine, Binding, DefaultRenderContext, RenderContext, TemplateSource, Template}
    val engine = new TemplateEngine
    val source = TemplateSource.fromFile(file, file.getName)
    engine.layout(source, attributes)
  }

This is where the error message is coming from:

Definitions.scala:620

    def getMember(owner: Symbol, name: Name): Symbol = {
      if (owner == NoSymbol) NoSymbol
      else owner.info.nonPrivateMember(name) match {
        case NoSymbol => throw new FatalError(owner + " does not have a member " + name)
        case result   => result
      }
    }


Here is where it starts compiling the template:

ScalaCompiler.scala:84

  // Attempt compilation
  (new compiler.Run).compile(List(file.getCanonicalPath))
  
Here is what the Scala template source code looks like:

  /* NOTE this file is autogenerated by Scalate : see http://scalate.fusesource.org/ */

  import _root_.scala.collection.JavaConversions._
  import _root_.org.fusesource.scalate.support.TemplateConversions._
  import _root_.org.fusesource.scalate.util.Measurements._

  object $_scalate_$something_scaml {
    def $_scalate_$render($_scalate_$_context: _root_.org.fusesource.scalate.RenderContext): Unit = {
      import _root_.org.fusesource.scalate.support.RenderHelper.{sanitize=>$_scalate_$_sanitize, preserve=>$_scalate_$_preserve, indent=>$_scalate_$_indent, smart_sanitize=>$_scalate_$_smart_sanitize, attributes=>$_scalate_$_attributes}
      ;{
        val context: _root_.org.fusesource.scalate.RenderContext = $_scalate_$_context.attribute("context")
        import context._
        
        
        $_scalate_$_context << ( "<html>\n  <body>\n    The quick brown fox jumps\n    over the lazy dog111\n  </body>\n</html>\n" );
      }
    }
  }


  class $_scalate_$something_scaml extends _root_.org.fusesource.scalate.Template {
    def render(context: _root_.org.fusesource.scalate.RenderContext): Unit = $_scalate_$something_scaml.$_scalate_$render(context)
  }

Then theres this variable called stats and a method call to mapConserve.

  val result = stats mapConserve (typedStat)
  
`stats: scala.List[Typers.this.type#global#Tree]` looks like this:

  List(import _root_.scala.collection.JavaConversions._, import _root_.org.fusesource.scalate.support.TemplateConversions._, import _root_.org.fusesource.scalate.util.Measurements._, final object $_scalate_$something_scaml extends scala.ScalaObject {
    def this(): object $_scalate_$something_scaml = {
      $_scalate_$something_scaml.super.this();
      ()
    };
    def $_scalate_$render($_scalate_$_context: _root_.org.fusesource.scalate.RenderContext): Unit = {
      import _root_.org.fusesource.scalate.support.RenderHelper.{sanitize=>$_scalate_$_sanitize, preserve=>$_scalate_$_preserve, indent=>$_scalate_$_indent, smart_sanitize=>$_scalate_$_smart_sanitize, attributes=>$_scalate_$_attributes};
      {
        val context: _root_.org.fusesource.scalate.RenderContext = $_scalate_$_context.attribute("context");
        import context._;
        $_scalate_$_context.$less$less("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\012")
      }
    }
  }, class $_scalate_$something_scaml extends _root_.org.fusesource.scalate.Template with scala.ScalaObject {
    def this(): $_scalate_$something_scaml = {
      super.<init>();
      ()
    };
    def render(context: _root_.org.fusesource.scalate.RenderContext): Unit = $_scalate_$something_scaml.$_scalate_$render(context)
  })
  
mapConserve then loop and calls apply somewhere resulting in:

1. 

  final object $_scalate_$something_scaml extends scala.ScalaObject {
    def this(): object $_scalate_$something_scaml = {
      $_scalate_$something_scaml.super.this();
      ()
    };
    def $_scalate_$render($_scalate_$_context: _root_.org.fusesource.scalate.RenderContext): Unit = {
      import _root_.org.fusesource.scalate.support.RenderHelper.{sanitize=>$_scalate_$_sanitize, preserve=>$_scalate_$_preserve, indent=>$_scalate_$_indent, smart_sanitize=>$_scalate_$_smart_sanitize, attributes=>$_scalate_$_attributes};
      {
        val context: _root_.org.fusesource.scalate.RenderContext = $_scalate_$_context.attribute("context");
        import context._;
        $_scalate_$_context.$less$less("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\012")
      }
    }
  }

2.

  def this(): object $_scalate_$something_scaml = {
    $_scalate_$something_scaml.super.this();
    ()
  }

3.

  $_scalate_$something_scaml.super.this()

Then we call List_apply:

  if (fun.symbol == List_apply && args.isEmpty && !forInteractive)

Which is defined here (these are not related to Scalate or our template in anyway - interesting):

  lazy val ListModule = getModule("scala.collection.immutable.List")
  lazy val List_apply = getMember(ListModule, nme.apply)

Which then fails here when it fails to find the nonPrivateMember for `apply` for `List`:

  def getMember(owner: Symbol, name: Name): Symbol = {
    if (owner == NoSymbol) NoSymbol
    else owner.info.nonPrivateMember(name) match {
      case NoSymbol => throw new FatalError(owner + " does not have a member " + name)
      case result   => result
    }
  }
  
So I guess after all that it seems that the compiler cannot find the apply method for `scala.collection.immutable.List`. Just like the error message said...

Vaughan

unread,
Oct 17, 2011, 10:58:50 AM10/17/11
to sca...@googlegroups.com
Not sure if you solved the problem here yet, but I can confirm that it is definitely a classpath issue.

I used the `classpath` from a working compiler (unfiltered-scalate) with `combinedClassPath` = true and it works.

I'm trying to determine whether it is a problem with jar ordering or jar existence.

Vaughan

unread,
Oct 17, 2011, 11:13:40 AM10/17/11
to sca...@googlegroups.com
Solved!

scala-library.jar must come before scala-compiler.jar (or possibly before other jars, put it at the front to be safe)

Simple add <path-to-scala-compiler.jar> to engine.classpath and set engine.combinedClassPath = true.

Not sure why Mads first try didn't work:

I even tried setting the class-path of the TemplateEngine explicitly 
as the following without any luck. 
/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala- 
library.jar:/Users/Mads/Desktop/a/project/boot/scala-2.8.1/lib/scala- 
compiler.jar:/Users/Mads/.ivy2/cache/org.fusesource.scalate/scalate- 
core/bundles/scalate-core-1.4.1.jar 

In the last post though, scala-compiler is before scala-library, which would explain issue.

:)

James Strachan

unread,
Oct 25, 2011, 11:33:51 AM10/25/11
to sca...@googlegroups.com
Whoah! Thats really odd! Great catch!!!

I wonder if you could double check that there's no other
scala-compiler / scala-library in the classpath (or on your CLASSPATH
or your lib/ext etc)? The only explanation I can think of for the
ordering being an issue is if there were some different classes with
the same names in scala-library and scala-compiler jars? Very spooky!

--

Paolo G. Giarrusso

unread,
Feb 19, 2012, 4:13:55 PM2/19/12
to Vaughan, sca...@googlegroups.com

On Oct 17 2011, 4:13 pm, Vaughan <vroues...@gmail.com> wrote:
> Solved!
>
> scala-library.jar must come before scala-compiler.jar (or possibly before
> other jars, put it at the front to be safe)
>

> Simple add *<path-to-scala-compiler.jar>* to *engine.classpath* and set *engine.combinedClassPath
> = true*.

Hi,
I run into the same problem with Scalate 1.5.3; I'm using it to
generate source code to compile, and I wanted the generation to be a
robustly working part of the build system.

Accomplishing this task was exceedingly difficult - in the end, I
ended up adapting this code:
http://code.google.com/p/scala-integrated-query/source/browse/trunk/generator-src/generator.scala

Writing a robust fix along those lines was next to impossible for me -
this is what I use to get the path of the scala-library:

engine.classpath = (new File(System.getProperty("user.home")) /
".ivy2" / "cache" / "org.scala-lang" / "scala-library" / "jars" /
("scala-library-" + scalaVersion + ".jar")).absolutePath

this fixed the problem, but seems like a huge hack since the script
might be used on other machines (some day even on Windows, maybe).
I presume this should be fixable by altering the file which was
mentioned before, namely:

https://github.com/scalate/scalate/blob/master/scalate-core/src/main/scala/org/fusesource/scalate/support/ScalaCompiler.scala#L98

Is it possible to get such a fix?

Cheers,
Paolo

James Strachan

unread,
Feb 20, 2012, 3:52:48 AM2/20/12
to sca...@googlegroups.com, Vaughan

Am not totally sure what the Scalate fix is - any ideas? Its sounding
like there's something wrong with scala-library and scala-compiler
(maybe having different versions of the same class name or something?)

Paolo G. Giarrusso

unread,
Jul 19, 2012, 8:22:57 PM7/19/12
to sca...@googlegroups.com, Vaughan, ja...@fusesource.com
Hi! Sorry for the late response, but I missed your answer (I was not subscribed, now I am, at least to this conversation).

Why don't you try this (https://github.com/TiarkRompf/virtualization-lms-core/blob/master/src/internal/ScalaCompile.scala) setup code to invoke the compiler? It seems much simpler and more robust, and I'm using it successfully.

Why does the scala compiler need to have itself on the classpath anyway? That seems to make little sense, and the code above doesn't do it.

The rest of this post are my ideas as to what might be the cause. Those are educated guesses, helped by reading the Scala compiler code. However, it might just be easier to ask on scala-language or scala-internals, where people who actually know the answer might explain it.

I don't think that List has different definitions - or rather, I'm almost sure this is not the case; I rather suspect that a Symbol might be created without a corresponding class being available.
In that case, the lookup failure would just indicate that the symbol List is not found. I've explored a bit the reflection source code, and at least symbol creation does not seem to involve any class lookup - not so directly. The method SymbolLoader.complete(Symbol) (in src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala) is quite suggestive of that.

The ordering suggests that the scala-compiler shadows scala-library. I fear that the shadowing might happen at the package level. scala-compiler also defines the scala package, as the library does.

In fact, a ClassPath (defined in src/compiler/scala/tools/nsc/util/ClassPath.scala) "Represents a package which contains classes and other packages" (from its ScalaDoc), and its origin is represented by ClassPath.origin, which is "A String representing the origin of this classpath element, if known. For example, the path of the directory or jar."

Best regards
Reply all
Reply to author
Forward
0 new messages