【问题标题】:Running Objects in Play 2.0 Framework在 Play 2.0 框架中运行对象
【发布时间】:2015-01-27 17:09:40
【问题描述】:

我创建了一个 Scala Play 2.0 项目,然后添加了一个带有准系统 main 函数的 Test 对象。

当我运行Test 对象时,我得到一个ClassDefNotFoundError。这是因为Test 对象显然没有被编译到任何项目文件夹中的文件中。

运行捆绑的 Play 服务器工作正常。

有没有人尝试将可运行对象添加到 Scala Play 框架项目并取得成功?

Test 对象正在名为 test-module 的 Play 项目内的新模块中创建。

**** 更新****

SBT 似乎在某种程度上与“测试模块”模块发生冲突。 Play 是一个 SBT 项目,因此它会编译到其“目标”目录。然而,'test-module' 不是 SBT,因此想要编译到 'out' 目录。问题是编译后的文件永远不会进入“out”目录,实际上它们根本不会进入任何目录。

【问题讨论】:

  • 您能否展示您的代码并提供您在项目中创建 Test 对象的位置?
  • 真的没有代码可以显示,Play 2.0 是由 IntelliJ 14 生成的。Test 对象是一个插入的 hello world。保证在任何代码中都没有错误。立即用位置更新 OP。
  • test-module是你Play项目的顶级目录吗?因为默认情况下应用程序代码应该在app 文件夹内。顺便说一下,runnable object 是什么意思,应用程序的入口点?
  • @PermaFrost test-module 在顶级目录下。我的意思是可运行,因为对象有一个主要方法。这是对某些代码的测试。我不需要网络服务器或游戏来测试它。
  • 如果是测试,我建议使用测试框架来构建它,那么您可以通过sbt 控制台使用框架的运行器,一种可能是ScalaTest (scalatest.org)。如果您想在sbt 中运行特定的主类,您也可以尝试sbt run-main <fullClassName> - 您只需确保您的对象/类位于类路径中(对于 Play 项目,这意味着在 app 文件夹中)。希望这会有所帮助。

标签: scala playframework playframework-2.0


【解决方案1】:

Play 项目的 IntelliJ 模板假定 Play 将是顶级目录。

在这里创建模块时,必须向 SBT 注册它,因为它不是自动完成的。

并确保遵循 module->src->main->scala 对源文件的约定,或者在 build.sbt 中更改它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2012-02-20
    相关资源
    最近更新 更多