【问题标题】:"object scala not found" trying to run vanilla Play 2 app“找不到对象 scala”试图运行 vanilla Play 2 应用程序
【发布时间】:2013-02-27 18:23:54
【问题描述】:

为了在我的 Windows 上运行一个普通的 Play 应用程序(但希望不会更长,希望!)开发机器,我竭尽全力。

我下载了 typesafe-stack 2.1 并使用推荐的 giterate 模板创建了一个基本的 Play 应用程序:

g8 typesafehub/play-scala.

然后我运行 sbt run 并等待服务器启动,导航到 localhost:9000 并获得一个带有根本原因 MissingRequirementError: object scala not foundjava.lang.ExceptionInInitializerError

听起来像是类路径问题 (?) - 但我不知道从哪里开始 1) 我是 sbt、scala 和 play 的新手,以及 2) 我在诊断和修复类路径问题方面很垃圾。所以我想我会在这里问,希望有人能给我指出一个有用的调查方向。

这是堆栈跟踪:

play.api.UnexpectedException: Unexpected exception [ExceptionInInitializerError: null]
        at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$11.apply(PlayReloader.scala:228) ~[na:na]
        at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$11.apply(PlayReloader.scala:221) ~[na:na]
        at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.2]
        at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2.apply(PlayReloader.scala:221) ~[na:na]
        at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2.apply(PlayReloader.scala:219) ~[na:na]
        at scala.Either$LeftProjection.map(Either.scala:183) ~[scala-library.jar:0.11.2]
java.lang.ExceptionInInitializerError: null
        at play.templates.ScalaTemplateCompiler$TemplateAsFunctionCompiler$.getFunctionMapping(ScalaTemplates.scala:561) ~[templates_2.9.1-2.0.jar:2.0]
        at play.templates.ScalaTemplateCompiler$.generateFinalTemplate(ScalaTemplates.scala:500) ~[templates_2.9.1-2.0.jar:2.0]
        at play.templates.ScalaTemplateCompiler$.compile(ScalaTemplates.scala:189) ~[templates_2.9.1-2.0.jar:2.0]
        at sbt.PlayCommands$$anonfun$48$$anonfun$apply$38.apply(PlayCommands.scala:533) ~[na:na]
        at sbt.PlayCommands$$anonfun$48$$anonfun$apply$38.apply(PlayCommands.scala:531) ~[na:na]
        at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:60) ~[scala-library.jar:0.11.2]
Caused by: scala.tools.nsc.MissingRequirementError: object scala not found.
        at scala.tools.nsc.symtab.Definitions$definitions$.getModuleOrClass(Definitions.scala:655) ~[scala-compiler.jar:na]
        at scala.tools.nsc.symtab.Definitions$definitions$.getModule(Definitions.scala:605) ~[scala-compiler.jar:na]
        at scala.tools.nsc.symtab.Definitions$definitions$.ScalaPackage(Definitions.scala:145) ~[scala-compiler.jar:na]
        at scala.tools.nsc.symtab.Definitions$definitions$.ScalaPackageClass(Definitions.scala:146) ~[scala-compiler.jar:na]
        at scala.tools.nsc.symtab.Definitions$definitions$.AnyClass(Definitions.scala:176) ~[scala-compiler.jar:na]
        at scala.tools.nsc.symtab.Definitions$definitions$.init(Definitions.scala:814) ~[scala-compiler.jar:na]

注意:其他人已经问过完全相同的问题here,但它已被关闭,因为它“不太可能帮助任何未来的访客”。由于我是一位未来的访客,他会发现这个问题的答案非常有帮助,我觉得自己再问一次是有道理的。

谢谢!

【问题讨论】:

  • 我也有同样的问题。请不要关闭它,因为它不太可能帮助他人。

标签: playframework classpath sbt playframework-2.0


【解决方案1】:

在通过 Typesafe Stack 安装 Play 2.0 时,您不是我听说的第一个抱怨的人。我自己没有时间进行调查,但我知道通过Play 2.0 Documentation 安装 Play 2.0 应该可以避免上述问题。

我的另一个想法是您发出的是sbt 而不是play。当然,它们几乎是同一个应用程序,但我希望您的 sbt 命令指向 sbt 的实例,而 play 可能指向具有不同类路径的单独可执行文件。

【讨论】:

  • 确实,在我第一次玩 play2 时,我没有使用 set 而是仅使用 play 命令。此外,我发现 GitHub 上的文档比 play 网站上的文档更有用...
  • 问题是 typesafe 的文档明确显示使用 sbt。当我安装类型安全堆栈时,它并没有以我可以在命令行中键入 play 并让它工作的方式安装 Play。
  • 我最终通过放弃类型安全堆栈让它工作了。谢谢!
【解决方案2】:

为了将来参考,我发现自己在将 play 2.0.4 与 eclipse 结合使用时遇到了类似的问题。

我通过添加解决了这个问题

  <classpathentry path="<myProjectDirectory>\target\scala-2.9.1\classes_managed" kind="lib"></classpathentry>

&lt;myProjectDirectory&gt;/.classpath

我不知道怎么做,但不知怎的,这条线被删除了......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-08
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多